在main函数下创建两个线程,一个线程为生产者线程,一个线程为消费者线程
时间: 2023-11-28 09:54:54 浏览: 31
好的,以下是一个简单的示例代码:
```c++
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <queue>
std::mutex mtx;
std::condition_variable cv;
std::queue<int> q;
const int max_queue_size = 10;
void producer() {
for (int i = 0; i < 20; ++i) {
std::unique_lock<std::mutex> lock(mtx);
while (q.size() >= max_queue_size) {
cv.wait(lock);
}
q.push(i);
std::cout << "Produced: " << i << std::endl;
cv.notify_all();
}
}
void consumer() {
for (int i = 0; i < 20; ++i) {
std::unique_lock<std::mutex> lock(mtx);
while (q.empty()) {
cv.wait(lock);
}
int val = q.front();
q.pop();
std::cout << "Consumed: " << val << std::endl;
cv.notify_all();
}
}
int main() {
std::thread producer_thread(producer);
std::thread consumer_thread(consumer);
producer_thread.join();
consumer_thread.join();
return 0;
}
```
这是一个简单的生产者消费者模型,其中生产者线程负责向队列中添加元素,消费者线程负责从队列中取出元素。队列的最大长度为10,当队列满时生产者线程会等待,当队列为空时消费者线程会等待。通过互斥锁和条件变量实现线程间的同步。