我已经使用 Boost 线程编写了一个程序。我已经分配了两个缓冲区(每个工作线程一个)来存储它们要处理的一些信息。他们坐下来等待缓冲区中出现某些内容,然后对其进行处理并将结果放入不同的缓冲区中。我的缓冲区实现是线程安全的。目前,我让主线程忙等待直到缓冲区大小为零,但这确实效率低下,因为它必须不断请求缓冲区控制,然后检查大小。我想要一种让主线程休眠的方法,直到两个工作线程都发出它们完成的信号。我相当确定这可以使用 boost::condition_variable
来实现,但我不确定如何使用两个工作线程来实现。
非常感谢帮助。
编辑 - 另外,boost::barrier
也适用吗?
最佳答案
你也可以使用 thread::join 方法。此方法将等待线程完成(线程函数返回)。
有关 join 的更多信息.
我不认为障碍可以帮助你。屏障允许停止线程处理,直到所有线程都遇到屏障。当所有线程都调用了 barrier::wait 后,所有线程停止等待。
关于c++ - Boost:两个工作线程,让主线程休眠直到它们都完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11946466/