std::mutex mtx4;
std::condition_variable produce4, consume4;
int cargo4 = 0; // shared value by producers and consumers
static void consumer4()
{
std::unique_lock<std::mutex> lck(mtx4);
while (cargo4 == 0) consume4.wait(lck);
std::cout << cargo4 << '\n';
cargo4 = 0;
produce4.notify_one();
}
static void producer(int id)
{
std::unique_lock<std::mutex> lck(mtx4);
while (cargo4 != 0) produce4.wait(lck);
cargo4 = id;
consume4.notify_one();
}
int test_condition_variable_notify_one()
{
std::thread consumers[10], producers[10];
// spawn 10 consumers and 10 producers:
for (int i = 0; i<10; ++i) {
consumers[i] = std::thread(consumer4);
producers[i] = std::thread(producer, i + 1);
}
std::condition_variable
最新推荐文章于 2024-10-06 10:17:48 发布
该代码示例展示了如何在C++中使用std::mutex和std::condition_variable来处理生产者消费者问题。10个生产者线程和10个消费者线程共享一个变量cargo4,生产者在cargo4不为0时等待,设置cargo4后通知消费者;消费者在cargo4为0时等待,消费后将其重置为0并通知下一个生产者。
摘要由CSDN通过智能技术生成