std::condition_variable 的 notify_all() 和 notify_one() 有什么区别?

What's the difference between notify_all() and notify_one() of std::condition_variable?

本文关键字:notify 区别 one 什么 all condition variable std      更新时间:2023-10-16

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

例如,如果条件变量上有十个线程被阻止,notify_one()将只取消阻止一个线程,而notify_all()将取消阻止所有线程。在您的情况下,您将希望使用notify_one(),这样就不会唤醒没有任何工作等待的线程。