一、总述
在C++11中,我们可以使用条件变量(condition_variable)实现多个线程间的同步操作;
当条件不满足时,相关线程被一直阻塞,
直到某种条件出现,这些线程才会被唤醒。
主要成员函数如下:
(1)wait(unique_lock &lck)
当前线程的执行会被阻塞,直到收到 notify 为止。
(2)wait(unique_lock &lck,Predicate pred)
当前线程仅在pred=false时阻塞;如果pred=true时,不阻塞。
wait()可依次拆分为三个操作:释放互斥锁、等待在条件变量上、再次获取互斥锁
2、notify_one:notify_one():没有参数、没有返回值。
解除阻塞当前正在等待此条件的线程之一。如果超过一个,不会指定具体哪一线程。
如果没有线程在等待,则该函数不执行任何操作。
// condition_variable::notify_one
#include // std::cout
#include // std::thread
#include // std::mutex, std::unique_lock
#include // std::condition_variable
std::mutex mtx;
std::condition_variable produce,consume;
int cargo = 0; // shared value by producers and consumers
void consumer () {
std::unique_lock lck(mtx);
while (cargo==0) consume.wait(lck);
std::cout
关注
打赏
热门博文
- DevOps实践教程 华为云 系列教程2021 合集
- ❤️Python Django网站开发 2021年最新版教程 合集❤️
- ❤️java多线程并发编程入门 教程合集❤️
- ❤️区块链Hyperledger Fabric 老版本 1.1.0 快速部署安装 教程合集❤️
- ❤️Docker教程小白实操入门 教程合集❤️
- ❤️微信小程序 云开发 教程合集(视频+图文)免费❤️
- C++ boost::asio::io_service创建线程池thread_group简单实例
- C++ error: ‘shared_ptr’ was not declared in this scope
- git 代码回滚回退到指定版本 并 提交
- C++ 得到map中最后一个元素
