我有以下情况:
我把一个任务分成几个阶段,每个阶段有几个线程做实际的工作,后期的线程需要等待当前阶段的所有线程完成。
例如:
线程 1、2、3 正在执行第一步中的工作
线程 4、5、6 正在执行第二步中的工作
线程 7、8、9 正在执行第三步……
每个步骤中的线程都是独立的,但它们需要等待上一步中的线程完成。
这是我想要实现的方法:
- 在当前步骤的每个线程中,等待表示当前步骤是否可以启动的条件
- 一旦可以开始当前步骤,所有线程都开始工作,并在屏障上等待此步骤中的所有线程完成
- 此步骤中的所有线程完成后,在下一步线程正在等待的条件变量上广播
这有意义吗?这里有什么明显的错误吗?
我被多线程程序的高级语言结构宠坏了,使用 pthread API 对我来说很痛苦。在这里,我需要一些关于此用例中最佳实践的建议?非常感谢