CPP线程:生产者与消费者的问题
来源:互联网 发布:mac玩魔兽世界怎么样 编辑:程序博客网 时间:2024/06/05 09:59
#include <iostream>#include <thread>#include<condition_variable>#include <mutex>#include<ctime>#include <array>#include <vector>using namespace std;mutex m;condition_variable full,empty;bool flag = true;//标志 消费完了就退出vector<int>myint(10);//开辟10个元素int num = 10;void put(int num)//生产{for (int i = 0; i < num; i++){unique_lock<mutex>lk(m);while (10<=myint.size()){empty.wait(lk);//满了就一直等待}myint.push_back(i);//插入数据cout << "生产:" <<i<< endl;full.notify_all();}this_thread::sleep_for(chrono::seconds(3));flag = false;}void take()//消费{while (flag){unique_lock<mutex>lk(m);while (0==myint.size()){full.wait(lk);//等待}if (flag)//消费{cout << myint[myint.size() - 1] <<"ID:"<<this_thread::get_id()<< endl;myint.pop_back();empty.notify_all();}}}//多个生产者 对 多个消费者void main(){//创建消费者thread t1(take);thread t2(take);thread t3(take);thread s1(put, 10);thread s2(put, 10);t1.join();t2.join();t3.join();cin.get();}//单个生产者 与 单个消费者void main(){//创建消费者thread t1(take);thread t2(take);thread t3(take);thread t4(take);put(10);//生产t1.join();t2.join();t3.join();t4.join();cin.get();}<img src="http://img.blog.csdn.net/20150822013207296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
0 0
- CPP线程:生产者与消费者的问题
- 线程中关于生产者与消费者的问题?
- 多线程 消费者与生产者 的问题 (线程同步)
- 生产者与消费者的问题
- Windows线程(生产者与消费者问题)
- Windows线程(生产者与消费者问题)
- 线程经典,生产者与消费者问题
- C#生产者与消费者问题 线程同步
- 线程同步-生产者与消费者问题
- 深入线程:生产者与消费者问题
- 线程协作(生产者与消费者问题)
- 线程间通信(生产者与消费者问题)
- 线程生产者与消费者
- 线程---生产者与消费者
- 生产者消费者模式的线程同步问题
- 线程同步:生产者和消费者的问题
- 关于线程生产者和消费者的问题
- 进程线程的生产者和消费者问题
- 常用传感器协议8:奥松温湿度传感器
- Hadoop生态概览
- 实现iframe在mobile上滚动
- 导航栏互相加载的栈操作问题
- android学习笔记
- CPP线程:生产者与消费者的问题
- 每日五题(java基础)
- 介绍几个好用的android自定义控件
- 七款Debug工具推荐:iOS开发必备的调试利器
- iOS各种调试
- Java中的static关键字解析
- android:layout_weight 权重
- 正则表达式编程实例
- 多线程笔试面试题汇总