目前,我正在使用 C++11 中的 std::thread
实现一个多线程项目。我使用 std::condition_variable
来同步线程。具体来说,一个消费者函数调用 std::condition_variable
的成员函数 wait()
等待来自全局任务队列的任务,另一个生产者函数生成任务并将其放入队列。但是我不知道std::condition_variable
的notify_all()
和notify_one()
成员函数的区别。我应该在生产者函数中使用哪个函数?谢谢!
最佳答案
如果条件变量上阻塞了十个线程,例如,notify_one()
将仅解除阻塞一个线程,而 notify_all()
将全部解除阻塞。在您的情况下,您需要使用 notify_one()
这样您就不会唤醒没有任何工作等待它们的线程。
关于c++ - std::condition_variable 的 notify_all() 和 notify_one() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9015748/