我在一些物体运行的并行任务,使这个速度,他们并行运行4。 现在有一种新的要求,我需要执行需要在同一时间执行的一个,而其他必须等待(其他人不能执行其他任务)的任务。
我不能让测试同步。
请检查图像波纹管作为一个更好的解释。
在一次执行一个已完成,但我想用一个信号量等待在开始和结束时的4个对象。 问题是,信号量不会等待所有为了留下另一个在得到完成。
它只能启动,当所有4个已完成离开这个执行。 我应该用什么呢?
我在一些物体运行的并行任务,使这个速度,他们并行运行4。 现在有一种新的要求,我需要执行需要在同一时间执行的一个,而其他必须等待(其他人不能执行其他任务)的任务。
我不能让测试同步。
请检查图像波纹管作为一个更好的解释。
在一次执行一个已完成,但我想用一个信号量等待在开始和结束时的4个对象。 问题是,信号量不会等待所有为了留下另一个在得到完成。
它只能启动,当所有4个已完成离开这个执行。 我应该用什么呢?
使用Barrier
对象这种情况的发生4.这里一个参与计数是一个例子:
var barrier = new Barrier(4);
然后在你的任务的方法(S):
//do some work
//now, wait
barrier.SignalAndWait();
所有方法都将等到所有参与者都呼吁SignalAndWait()
然后他们将继续。