【发布时间】:2017-05-03 12:06:53
【问题描述】:
我需要一个使用 notify_all() 方法的示例。因为我无法理解它应该如何工作。
每个等待线程都以这样的代码开始:
std::unique_lock<std::mutex> lock(mutex);
condition_variable.wait(lock, [](){return SOMETHING;});
一开始,等待线程需要获取一个互斥体。因此,如果有多个等待线程,其余线程将等待锁定互斥体。那么,如果等待线程卡在锁定互斥体上并且根本不执行方法 wait(),那么使用 notify_all() 的目的是什么?这些线程将一一唤醒,而不是同时唤醒。
【问题讨论】:
-
让我引导您到一个很好的参考/示例网站:en.cppreference.com/w/cpp/thread/condition_variable
-
它不能解决我的问题。对不起。
标签: c++ multithreading condition-variable