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

问题描述 投票:0回答:1

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

我无法进行测试同步。

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

This is the execution I need to implement

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

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

c# parallel-processing semaphore
1个回答
1
投票

使用Barrier对象,参与次数为4.这是一个例子:

var barrier = new Barrier(4);

然后在你的任务方法中:

//do some work

//now, wait
barrier.SignalAndWait();

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

© www.soinside.com 2019 - 2024. All rights reserved.