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 条评论
登录 后参与评论

相关文章

来自专栏Android干货园

Android Studio 运行项目遇到的错误

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

23650
来自专栏Python攻城狮

Python操作redis

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

27730
来自专栏marsggbo

Flask入门笔记(一)

一、程序的基本结构 1.1 最简单的Flask程序 1 2 3 4 5 6 7 8 9 10 11 12 13 14#coding=utf-8 # 初始化 ...

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

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

24670
来自专栏拂晓风起

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

14840
来自专栏深度学习之tensorflow实战篇

python 如何设置多线程

和多进程的思路类似,我们也可以实现对线程的创建,在Python中,使用threading包实现。参数如下: 构造方法: Thread(group=No...

27330
来自专栏magicsoar

初识nginx——配置解析篇

一、nginx的介绍     nginx是由俄罗斯人开发的一款高性能的http和反向代理服务器,也可以用来作为邮件代理。相比较于其他的服务器,具有占用内存少,稳...

31880
来自专栏nummy

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

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

20240
来自专栏码洞

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

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

11310
来自专栏python3

linux批量kill进程

ps -ef|grep orderMatcherSend.php |grep -v grep|cut -c 9-15|xargs kill -9

11020

扫码关注云+社区

领取腾讯云代金券