码迷,mamicode.com
首页 > 编程语言 > 详细

c++11的Condition_variable

时间:2017-05-17 23:50:54      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:png   .com   构造   编号   while   使用   span   ready   http   

先看官方介绍:

技术分享

在下面这段代码中:

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

标签:png   .com   构造   编号   while   使用   span   ready   http   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!