c++11的Condition_variable

先看官方介绍:

在下面这段代码中:

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继续运行下面的逻辑。

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏锦小年的博客

python学习笔记5.4-包的发布

有时候我们创建了一个非常好用的包,希望能够分发给好友一起使用,或者开源到网上,这个时候就要会利用python包的发布的工具。 一个健壮的包,并不只是包含有代...

18810
来自专栏Java3y

Struts2【配置】

前言 上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值...

2705
来自专栏码洞

自己动手实现 Shell多进程套套符

一篇技术文章如今仅仅是理论上讲得天花乱坠,却不能自己撸出东西来,那么它写的再好,也只能算纸上谈兵。继上一篇 《我们天天都在使用的套套符命令,Shell 在里面到...

911
来自专栏自由而无用的灵魂的碎碎念

解决source insight 3.5遇到的parse too comples错误

我使用source insight 编写c,编写代码的时候,source insight的symbol windows可能会提示parse too comple...

1102
来自专栏Android干货园

Android Studio 运行项目遇到的错误

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/47...

1935
来自专栏拂晓风起

Flash builder打包as actionscript代码,发布swc

1224
来自专栏行者常至

Struts2.之HelloWorld简单演示

812
来自专栏Python攻城狮

Python操作redis

1 .用户登录首先判断是否在redis缓存中,如果在redis缓存中,直接登录成功; 2 .若用户未在redis缓存,则访问Mysql,判...

1513
来自专栏逍遥剑客的游戏开发

Tiled源码分析(四): 插件机制

2277
来自专栏nummy

sphinx入门指南【1】快速入门

包含.rst文件的根目录称之为源文件目录,目录中还包含sphinx的配置文件conf.py。

1344

扫码关注云+社区