Producer Consumer Program in Multithreading.
- prashant raj
- Mar 27, 2022
- 1 min read

#include <iostream>
#include<deque>
#include<thread>
#include<mutex>
#include<condition_variable>
std::deque<int> buffer;
std::mutex mu;
std::condition_variable cv;
using namespace std;
int bufferSize = 50;
void producer(int val)
{
while(val)
{
std::unique_lock<std::mutex> locker(mu);
cv.wait(locker,[](){ return buffer.size() < bufferSize;});
buffer.push_back(val);
cout<<"producer produced"<<val<<endl;
val--;
locker.unlock();
cv.notify_one();
}
}
void consumer()
{
while(true)
{
std::unique_lock<std::mutex> locker(mu);
cv.wait(locker,[](){ return buffer.size() > 0;});
int value = buffer.back();
buffer.pop_back();
cout<<"consumer consumed"<<value<<endl;
locker.unlock();
cv.notify_one();
}
}
int main()
{
thread t1(producer,50);
thread t2(consumer);
t1.join();
t2.join();
return 0;
}
コメント