我有一个场景,我正在尝试提出最佳同步方法。我们假设 C++11 中的 std::thread 存在,因此无需担心各种线程库之间的差异等。
场景是这样的。主线程线程 a 想要将任务分发给一堆工作线程。然后,在暂时发出最后的指令后,它需要等待所有线程完成它们的工作。我们不想加入他们,只是等待他们完成他们给定的任务。然后线程 a 必须分析从所有线程收集到的数据,然后向工作人员发送命令以重新开始该过程。
简而言之,就是这些步骤。
- 线程 a 向所有工作线程发送命令 x。
- 线程 a 等待所有工作人员完成。
- 线程 a 进行处理。
- 回到 1。
你会建议我用什么?简单的互斥锁?条件变量?两者的结合?任何关于如何构建同步以尽可能高效的提示将不胜感激。