[英]Why in std::condition_variable notify_all works faster than notify_one (on random requests)?
[英]What's the difference between notify_all() and notify_one() of std::condition_variable?
目前,我正在使用C ++ 11中的std::thread
实现一个多线程项目。 我使用std::condition_variable
来同步线程。 详细地说,一个消费者函数调用std::condition_variable
wait()
成员函数来等待来自全局任务队列的任务,另一个生成器函数生成并将任务放入队列。 但我不知道std::condition_variable
notify_all()
和notify_one()
成员函数之间的区别。 我应该在生产者函数中使用哪个函数? 谢谢!
例如,如果条件变量上有十个线程被阻塞,则notify_one()
将仅解除阻塞一个线程,而notify_all()
将解除阻塞所有线程。 在您的情况下,您将需要使用notify_one()
因此您不会唤醒没有任何工作等待它们的线程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.