消费者生产者问题

#include <iostream>
#include <thread>
#include <mutex>
#include <queue>
#include <chrono>
#include <condition_variable>
using namespace std;
int main(int argc,char **argv){
    queue<int> buffer;
    mutex m;
    condition_variable cond_var;
    int num;

    thread producer([&](){
       while(1){
           this_thread::sleep_for(chrono::seconds(1));

           unique_lock<std::mutex> lock(m);

           num++;
           cout<<"produucing"<<num<<endl;
           buffer.push(num);

           cond_var.notify_one();
       }
    });

    thread consumer([&](){
        while(1){
            unique_lock<mutex> lock(m);

            if(buffer.empty())
                cond_var.wait(lock);

            cout<<"consuming"<<buffer.front()<<endl;
            buffer.pop();
        }
    });
    producer.join();
    consumer.join();
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容