开发环境
虚拟机:ubuntu18.04
vscode远程连接
mingw C++14
使用C++中的条件变量和线程类
#include<iostream>
#include<queue>
#include<thread>
#include<mutex>
#include<condition_variable>
#include<unistd.h>
using namespace std;
int maxSize=20;//生产者消费者队列最大值
queue<int> q;//生产者消费者队列
mutex m;//互斥锁
condition_variable consume,produce;//条件变量是一种同步机制,要和mutex以及lock一起使用
int count=0;//最多操作100次
void consumer(){
while(count<100){
this_thread::sleep_for(chrono::milliseconds(200));
unique_lock<mutex> lck(m);//锁住
consume.wait(lck,[]{
return q.size()>0;});//条件不满足 阻塞
q.pop();
cout << "consumer " << this_thread::get_id() << ": ";
cout << q.size() << '\n';
++count;
produce.notify_all();//唤醒生产者
lck.unlock();<