C++实现生产者消费者
来源:互联网 发布:windows无法访问文件夹 编辑:程序博客网 时间:2024/06/07 18:04
#include <condition_variable>#include <mutex>#include <thread>#include <iostream>#include <queue>#include <chrono>int main(){ // 生产者数量 std::queue<int> produced_nums; // 互斥锁 std::mutex m; // 条件变量 std::condition_variable cond_var; // 结束标志 bool done = false; // 通知标志 bool notified = false; // 生产者线程 std::thread producer([&]() { for (int i = 0; i < 5; ++i) { std::this_thread::sleep_for(std::chrono::seconds(1)); // 创建互斥锁 std::unique_lock<std::mutex> lock(m); std::cout << "producing " << i << '\n'; produced_nums.push(i); notified = true; // 通知一个线程 cond_var.notify_one(); } done = true; cond_var.notify_one(); }); // 消费者线程 std::thread consumer([&]() { std::unique_lock<std::mutex> lock(m); while (!done) { while (!notified) { // 循环避免虚假唤醒 cond_var.wait(lock); } while (!produced_nums.empty()) { std::cout << "consuming " << produced_nums.front() << '\n'; produced_nums.pop(); } notified = false; } }); producer.join(); consumer.join();}
阅读全文
0 0
- 生产者消费者---C实现
- c实现生产者消费者源代码
- C语言实现生产者-消费者问题
- linux c pv 实现生产者消费者模型
- 生产者消费者问题---C语言实现
- Linux C 实现生产者消费者问题
- C语言生产者与消费者-随机数实现
- 生产者消费者问题(C实现)
- 生产者-消费者问题及C语言实现
- c 生产者与消费者
- vc实现生产者消费者
- 生产者-消费者多线程实现
- 生产者消费者实现代码
- 生产者消费者实现
- 生产者消费者java实现
- c#实现生产者消费者
- 生产者消费者问题(实现)
- 生产者、消费者简单实现
- 自动化脚本腾讯云配置集群(三)批量修改host
- Java面试全集(中)
- 关于win10下pip命令出错的解决方法
- 英文学习20170902
- PHP laravel之模型&Eloquent
- C++实现生产者消费者
- 关于微信分享申请应用APPkey时该注意的地方
- BZOJ 3685 zkw线段树 || 权值线段树
- atom编辑器学习笔记
- maven安装eclipse-m2e插件安装
- phaser 背景音乐无限无限循环(7)
- L0和L1:正则化
- Top 8 Diagrams for Understanding Java
- 1019. 数字黑洞 (20) 用时40min【point:排序】