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-07-21 11:20:00 发布