我在某些对象上运行并行任务,以便更快地并行运行4。 现在有一个新的要求,我需要执行一项任务,一次要执行一项,而其他人必须等待(其他人不能执行另一项任务)。
我无法进行同步测试。
请查看下面的图片作为更好的解释。
一次执行一个,但我想使用信号量在开头和结尾等待4个对象。 问题是信号量并不等待所有人完成以便让另一个人进入。
它必须只在所有4个完成后才开始执行。 我该怎么用?
答案 0 :(得分:1)
使用Barrier
对象,参与次数为4.以下是一个示例:
var barrier = new Barrier(4);
然后在你的任务方法中:
//do some work
//now, wait
barrier.SignalAndWait();
所有方法都会等到所有参与者都调用SignalAndWait()
然后才会继续。