博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
std::condition_variable(3)复习
阅读量:5122 次
发布时间:2019-06-13

本文共 1187 字,大约阅读时间需要 3 分钟。

#include 
// std::cout#include
// std::thread#include
// std::mutex, std::unique_lock#include
// std::condition_variablestd::mutex mtx;std::condition_variable cv;int cargo = 0; // shared value by producers and consumersvoid consumer(){ std::unique_lock < std::mutex > lck(mtx); while (cargo == 0) cv.wait(lck); std::cout << cargo << '\n'; cargo = 0;}void producer(int id){ std::unique_lock < std::mutex > lck(mtx); cargo = id; cv.notify_one();//如果存在多个等待唤醒的线程则唤醒的线程时不确定的}int main(){ std::thread consumers[10], producers[10];  //多个生产者,多个消费者,只要加锁还是安全的 // spawn 10 consumers and 10 producers: for (int i = 0; i < 10; ++i) { consumers[i] = std::thread(consumer);//消费者线程 producers[i] = std::thread(producer, i + 1);//生产者线程 } // join them back: for (int i = 0; i < 10; ++i) { producers[i].join(); consumers[i].join(); } getchar(); return 0;}

 通常std::condition_variable使用std::unique_lock锁住线程,如果使用其的可以用std::condition_variable_any

转载于:https://www.cnblogs.com/zzyoucan/p/3826890.html

你可能感兴趣的文章
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
python常用函数
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
【工具相关】iOS-Reveal的使用
查看>>
数据库3
查看>>
存储分类
查看>>
下一代操作系统与软件
查看>>
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Yii2 Lesson - 03 Forms in Yii
查看>>
Python IO模型
查看>>
Ugly Windows
查看>>
DataGridView的行的字体颜色变化
查看>>
Java再学习——关于ConcurrentHashMap
查看>>
如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
查看>>
局域网内手机访问电脑网站注意几点
查看>>