C++11实现生产者和消费者
来源:互联网 发布:网络带来的危害 编辑:程序博客网 时间:2024/06/09 11:15
#include <iostream>#include <thread>#include <mutex>#include <deque>#include <vector>#include <condition_variable>#include <unistd.h>class CThreadMsg{private:std::deque<int> m_data;std::mutex m_mtx; // 全局互斥锁.std::condition_variable m_cv; // 全局条件变量.int m_nGen;public:void send_all(){m_cv.notify_all();}void send(){std::unique_lock <std::mutex> lck(m_mtx);m_nGen = ++m_nGen % 1000;printf("product %d\n", m_nGen);m_data.push_back(m_nGen);lck.unlock();m_cv.notify_one();}void ConsumerRecv(){while (true){sleep(5);std::unique_lock <std::mutex> lck(m_mtx);while (m_data.empty()){m_cv.wait(lck);}int nData = m_data.front();m_data.pop_front();printf("consume %d\n", nData);lck.unlock();}}public:CThreadMsg(){m_data.clear();m_nGen = 0;}virtual ~CThreadMsg(){send_all();}void Start(){std::thread t(&CThreadMsg::ConsumerRecv, this);t.detach();}};int main(){CThreadMsg test;test.Start();int i = 10;while(1){i--;if(i> 0) test.send();sleep(1);}return 0;}
阅读全文
0 0
- 生产者消费者---C实现
- C++11实现生产者和消费者
- c实现生产者消费者源代码
- 线程同步生产者和消费者c和java不同实现
- 生产者消费者问题 伪代码和C语言多线程实现
- 操作系统 使用C语言实现生产者和消费者问题
- Java 实现生产者和消费者
- 生产者和消费者Java实现
- ActivityMQ实现生产者和消费者
- 生产者和消费者线程实现
- C语言实现生产者-消费者问题
- linux c pv 实现生产者消费者模型
- 生产者消费者问题---C语言实现
- Linux C 实现生产者消费者问题
- C语言生产者与消费者-随机数实现
- 生产者消费者问题(C实现)
- 生产者-消费者问题及C语言实现
- 用BlockBoundQueue和c++11实现多线程生产者消费者问题
- 代码重构(一):函数重构规则
- webpack 编译报错 Couldn't find preset "env"
- SpringBoot-Actuator应用监控以及优雅停机
- typedef与#define的区别
- C/C++:各种基本算法实现小结(四)—— 图及其遍历
- C++11实现生产者和消费者
- 621. Task Scheduler
- hibernate连接oracle数据库
- iOS 开发者帐号 App转让/转移 及转移后的证书问题解答
- 354. Russian Doll Envelopes 类似最长递增子序列
- JS实现气泡提示框
- HIVE学习笔记:Hive CLI基本操作
- DesiredCapabilities参数设置
- 207. Course Schedule