目前,我正在C ++ 11中使用std::thread
实现一个多线程项目。我使用std::condition_variable
来同步线程。详细地说,一个消费者函数调用wait()
的{{1}}成员函数来等待来自全局任务队列的任务,另一个生成器函数生成并将任务放入队列。但我不知道std::condition_variable
的{{1}}和notify_all()
成员函数之间的区别。我应该在生产者函数中使用哪个函数?谢谢!
答案 0 :(得分:30)
例如,如果条件变量上有十个线程被阻止,notify_one()
将仅取消阻止一个线程,而notify_all()
将解锁所有线程。在您的情况下,您将需要使用notify_one()
,因此您不会唤醒没有任何工作等待它们的线程。