std::condition_variable(2)复习
2024-10-20 08:31:32
#include <iostream> // std::cout
#include <thread> // std::thread, std::this_thread::yield
#include <mutex> // std::mutex, std::unique_lock
#include <condition_variable> // std::condition_variable std::mutex mtx;
std::condition_variable cv; int cargo = ;
bool shipment_available()
{
return cargo != ;
} // 消费者线程.
void consume(int n)
{
for (int i = ; i < n; ++i) {
std::unique_lock <std::mutex> lck(mtx);
cv.wait(lck, shipment_available);//当返回false时阻塞,当true时解除阻塞
std::cout << cargo << '\n';
cargo = ;
}
} int main()
{
std::thread consumer_thread(consume, ); // 消费者线程. // 主线程为生产者线程, 生产 10 个物品.
for (int i = ; i < ; ++i)
{
while (shipment_available())//等待消费者把cargo置成0
std::this_thread::yield();//相当于sleep一下
std::unique_lock <std::mutex> lck(mtx);
cargo = i + ;
cv.notify_one();//唤醒一个阻塞的线程
} consumer_thread.join();
getchar();
return ;
}
最新文章
- hadoop.home.dir is not set
- Swift - 键盘弹出样式
- Linux上部署JProbe
- 转 mv 管道符
- VS2013的virtualpath在当前应用程序根的外部
- em和rem及rem在移动的应用
- wifi热点共享 3G网络
- Python - 多元组(tuple)
- socket实例2
- vue打开新页面
- ApplicationListener详解
- 洗礼灵魂,修炼python(89)-- 知识拾遗篇 —— 进程
- Django适合做大用户量的系统吗?
- jq的error
- CSS 随笔
- POJ1094——拓扑排序和它的唯一性
- expect 交互 模拟ssh 登陆
- C 语言与动态库相关基础知识
- LZO压缩算法64位崩溃问题
- 【NLP】新词发现