#include <iostream>
#include <algorithm>
#include <mutex>
#include <condition_variable>
#include <thread>
#include <queue>
std::mutex mu;
std::condition_variable cv;
std::deque<int> que;
void constom() {
for (int i = 0; i < 20; i++) {
std::unique_lock<std::mutex> ul(mu);
if (que.size() == 0) {
cv.wait(ul);
}
int data = que.back();
std::cout << data << std::endl;
que.pop_back();
std::cout << "constom" << std::endl;
ul.unlock();
}
}
void prodect() {
int count = 20;
while (count > 0)
{
std::unique_lock<std::mutex> unique(mu);
que.push_front(count);
unique.unlock();
std::cout << "producer a value: " << count << std::endl;
cv.notify_one();
std::this_thread::sleep_for(std::chrono::seconds(1));
count--;
}
}
int main()
{
std::thread t1(constom);
std::thread t2(prodect);
t1.join();
t2.join();
std::cout << "Hello World!\n";
}
生产者消费者模型
最新推荐文章于 2024-05-22 16:06:14 发布