C# 同步执行多个任务

C# 同步执行多个任务,c#,task-parallel-library,C#,Task Parallel Library,如何同步多个任务的执行 我需要所有任务都达到相同的指令,然后才能继续执行 每项任务在继续之前都必须等待其他任务到达该指令。如果您有各种不同的任务要等待,那么 如果同一任务有很多实例,那么运行它们就很容易了。听起来像是您在寻找的 使多个任务能够通过多个阶段并行地协同处理一个算法 以及 一组任务通过一系列阶段进行协作,其中组中的每个任务都发出信号,表示已在给定阶段到达障碍物,并隐式等待所有其他任务到达。相同的屏障可用于多个阶段 (在Barrier页面上的示例显示了四个任务都运行相同的代码-但这绝对不

如何同步多个任务的执行

我需要所有任务都达到相同的指令,然后才能继续执行


每项任务在继续之前都必须等待其他任务到达该指令。

如果您有各种不同的任务要等待,那么


如果同一任务有很多实例,那么运行它们就很容易了。

听起来像是您在寻找的

使多个任务能够通过多个阶段并行地协同处理一个算法

以及

一组任务通过一系列阶段进行协作,其中组中的每个任务都发出信号,表示已在给定阶段到达
障碍物,并隐式等待所有其他任务到达。相同的
屏障
可用于多个阶段


(在
Barrier
页面上的示例显示了四个任务都运行相同的代码-但这绝对不是一项要求)

我可以从任务内部使用Task.WaitAll来等待所有其他任务吗?Task.WaitAll和Barrier有不同的用法:Task.WaitAll将来自任务外部,确保它们在您进入主线程的下一步之前已经完成。Barrier给出了任务将在内部达到的“里程碑”,然后等待其他任务达到相同的点,然后再继续。这并不意味着任务已经完成,只是它达到了那个重要的点。WaitAll()确实不允许“…他们可以继续执行”@Sam-并且要直接回答,不,任务不应该对包含自身的一组任务调用
WaitAll
。这永远不会完成。@Damien_The_unsiver噢,一个循环长度为1的死锁,你不经常看到它。:-)(通常,有两个任务相互等待。)Task.WaitAll和Barrier之间的区别是什么?有了Barrier,任务还没有完成-他们(每个)在通过了Barrier之后仍有自己的工作要进行。使用
WaitAll
,所有这些任务都已完成-如果有更多的工作要做(对于多个任务),您需要创建一组新的任务来完成该工作。