c++ - Boost:两个工作线程,让主线程休眠直到它们都完成

标签 c++ multithreading boost boost-thread

我已经使用 Boost 线程编写了一个程序。我已经分配了两个缓冲区(每个工作线程一个)来存储它们要处理的一些信息。他们坐下来等待缓冲区中出现某些内容,然后对其进行处理并将结果放入不同的缓冲区中。我的缓冲区实现是线程安全的。目前,我让主线程忙等待直到缓冲区大小为零,但这确实效率低下,因为它必须不断请求缓冲区控制,然后检查大小。我想要一种让主线程休眠的方法,直到两个工作线程都发出它们完成的信号。我相当确定这可以使用 boost::condition_variable 来实现,但我不确定如何使用两个工作线程来实现。

非常感谢帮助。

编辑 - 另外,boost::barrier 也适用吗?

最佳答案

你也可以使用 thread::join 方法。此方法将等待线程完成(线程函数返回)。

有关 join 的更多信息.

我不认为障碍可以帮助你。屏障允许停止线程处理,直到所有线程都遇到屏障。当所有线程都调用了 barrier::wait 后,所有线程停止等待。

关于c++ - Boost:两个工作线程,让主线程休眠直到它们都完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11946466/

相关文章:

android - 在 c++ (android-ndk) 中从 YUV 转换为 RGB

c++ - 使用 boost::bind 结果作为参数

c++ - 我可以使用 boost 池作为存储来支持 boost 侵入式收集吗?

java - 随着添加更多线程,Java线程似乎加快了速度

c - 想要避免一次调用八个线程的 sempost

c++ - 如何在同一单位中使用具有比率的 Boost.Unit

c++ - 查找给定数字的质因数 C++ 没有函数

c++ - 为什么不是我可以加载(打开)的所有 DLL 模块?

c++ - 获取错误调试断言失败 : Expression c >= -1 && c <= 255

java - JavaMail 线程安全中的 IMAPStore 和 IMAPFolder 吗?