生产者与消费者问题代码
时间: 2024-09-14 13:14:43 浏览: 40
java生产者消费者问题代码实现
生产者与消费者问题是一个经典的并发问题,主要解决的是生产者和消费者在共享资源上的同步问题。下面是一个简单的生产者与消费者问题的代码实现:
```
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <queue>
using namespace std;
queue<int> q;
mutex mtx;
condition_variable cv;
void producer() {
for (int i = 0; i < 10; ++i) {
unique_lock<mutex> lck(mtx);
q.push(i);
cout << "Producer produced " << i << endl;
cv.notify_one();
}
}
void consumer() {
for (int i = 0; i < 10; ++i) {
unique_lock<mutex> lck(mtx);
while (q.empty()) {
cv.wait(lck);
}
int data = q.front();
q.pop();
cout << "Consumer consumed " << data << endl;
}
}
int main() {
thread t1(producer);
thread t2(consumer);
t1.join();
t2.join();
return 0;
}
```
在这个例子中,生产者线程通过不断地向队列中 push 数据,并通过条件变量通知消费者线程有数据可以消费。消费者线程则通过不断地从队列中 pop 数据,并在队列为空时等待条件变量通知有数据可以消费。
阅读全文