【发布时间】:2012-08-10 09:36:24
【问题描述】:
我使用 Boost 线程编写了一个程序。我已经分配了两个缓冲区(每个工作线程一个)来存储他们要处理的一些信息。他们坐下来等待缓冲区上出现一些东西,然后他们处理它并将结果放到不同的缓冲区中。我的缓冲区实现是线程安全的。目前,我让主线程忙着等待,直到缓冲区大小为零,但这确实效率低下,因为它必须不断请求对缓冲区的控制然后检查大小。我想要一种让主线程休眠的方法,直到两个工作线程都表示它们已完成。我相当肯定这可以使用boost::condition_variable 来实现,但我不确定如何使用两个工作线程来实现。
非常感谢您的帮助。
编辑 - 另外,boost::barrier 也适合吗?
【问题讨论】:
-
如何在当前设计中提供线程安全?
-
缓冲区上的 put/get 方法使用互斥体和条件变量。
-
既然可以使用mutex和cv,为什么不能写
wait_until_buffer_empty,使用mutex和cv呢?
标签: c++ multithreading boost boost-thread