受控并行任务执行使用什么

时间:2018-03-05 18:34:52

标签: c# parallel-processing semaphore

我在某些对象上运行并行任务,以便更快地并行运行4。 现在有一个新的要求,我需要执行一项任务,一次要执行一项,而其他人必须等待(其他人不能执行另一项任务)。

我无法进行同步测试。

请查看下面的图片作为更好的解释。

This is the execution I need to implement

一次执行一个,但我想使用信号量在开头和结尾等待4个对象。 问题是信号量并不等待所有人完成以便让另一个人进入。

它必须只在所有4个完成后才开始执行。 我该怎么用?

1 个答案:

答案 0 :(得分:1)

使用Barrier对象,参与次数为4.以下是一个示例:

var barrier = new Barrier(4);

然后在你的任务方法中:

//do some work

//now, wait
barrier.SignalAndWait();

所有方法都会等到所有参与者都调用SignalAndWait()然后才会继续。