我已经使用 Boost 线程编写了一个程序。我已经分配了两个缓冲区(每个工作线程一个)来存储他们要处理的一些信息。他们坐下来等待缓冲区上出现一些东西,然后他们处理它并将结果放到不同的缓冲区中。我的缓冲区实现是线程安全的。目前,我让主线程忙于等待缓冲区大小为零,但这确实效率低下,因为它必须不断请求对缓冲区的控制然后检查大小。我想要一种让主线程休眠的方法,直到两个工作线程都表示它们已完成。我相当肯定这可以通过使用来实现,boost::condition_variable
但我不确定如何使用两个工作线程来做到这一点。
非常感谢帮助。
编辑 - 另外,也boost::barrier
适合吗?