49

目前,我正在使用std::threadC++11 实现一个多线程项目。我std::condition_variable用来同步线程。具体来说,一个消费者函数调用wait()成员函数std::condition_variable等待来自全局任务队列的任务,另一个生产者函数生成任务并将其放入队列。但我不知道 .notify_all()notify_one()成员函数之间的区别std::condition_variable。我应该在生产者函数中使用哪个函数?谢谢!

4

1 回答 1

49

例如,如果有十个线程阻塞在条件变量上,notify_one()将只解除一个线程的阻塞,而notify_all()将它们全部解除阻塞。在你的情况下,你会想要使用notify_one()这样你就不会唤醒没有任何工作等待它们的线程。

于 2012-01-26T09:00:54.680 回答