首页 > 编程语言 > 详细

c++11的Condition_variable

时间:2017-05-17 22:40:43      阅读:370      评论:0      收藏:0      [点我收藏+]

先看官方介绍:

技术分享

在下面这段代码中:

std::unique_lock <std::mutex> lck(mtx);
    while (!ready) // 如果标志位不为 true, 则等待...
        cv.wait(lck); // 当前线程被阻塞, 当全局标志位变为 true 之后,
    // 线程被唤醒, 继续往下执行打印线程编号id.
    std::cout << "thread " << id << \n;

线程先用unique_lock独占锁获取mutex互斥锁(构造函数自动获取,见下图用法3),然后在使用cv.wait()(cv是事前定义好的Condition_variable对象)时,会阻塞线程并自动释放持有的锁,见下下图,但是在其他线程使用cv.notify_all()或其他唤醒方式后,会重新获得锁mutex继续运行下面的逻辑。

技术分享

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

技术分享

 

c++11的Condition_variable

原文:http://www.cnblogs.com/burningTheStar/p/6869796.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!