1.生产者与消费者模型
一个场所,两种角色,三种关系。(场所:线程安全的队列)
2.优点
解耦、支持忙闲不均、支持并发
3.实现
用到互斥锁,条件变量
#include <thread>
#include <mutex>
#include <deque>
#include <vector>
#include <condition_variable>
class Producer_Consumer
{
private:
deque<int> _q; //商品队列
mutex _mtx; // 全局互斥锁.
condition_variable _cv; // 全局条件变量.
int _count; //商品数
private:
void Product{
while (true){
unique_lock <mutex> lck(_mtx);
_count = ++_count % 1000;
printf("product %d\n", _count);
_q.push_back(_count);
lck.unlock();
_cv.notify_all();
}
}
void Consume{
while (true){
unique_lock <mutex> lck(_mtx);
whi