【发布时间】:2012-03-20 15:13:29
【问题描述】:
我使用 boost::thread 来管理线程。在我的程序中,我有线程池(工作者),有时会被激活以同时执行某些工作。
现在我使用 boost::condition_variable: 并且所有线程都在 boost::condition_variable::wait() 内部等待调用它们自己的 conditional_variableS 对象。
当我使用 conditional_variables 时,我可以避免在经典方案中使用互斥锁吗?我想唤醒线程,但不需要向它们传递一些数据,所以在唤醒过程中不需要锁定/解锁互斥锁,我为什么要在这上面花费 CPU(但是是的,我应该记住虚假唤醒)?
当 CV 收到通知时,boost::condition_variable::wait() 调用试图重新获取锁定对象。但我不需要这个确切的设施。
从另一个线程唤醒多个线程最便宜的方法是什么?
【问题讨论】:
标签: c++ multithreading boost synchronization