一、总述
在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中最后一个元素