请注意,我知道 Parallel.Invoke() 用于任务同步。我的问题是:
有没有一种方法可以使用类似 Parallel.Invoke 的方法来调用匿名方法,其中调用不会等待执行完成?
我认为并行执行(或并行调用)的全部要点是不必等待任务完成。如果你想等待一段代码执行完,而不是使用Parallel.Invoke,为什么不直接调用代码呢?我想我只是不明白 Parallel.Invoke 的意义。文档只是说明了它的作用, 但没有提及任何用例,这比直接调用代码更有用。
最佳答案
If you want to wait for a piece of code to finish executing, instead of using Parallel.Invoke, why not just call the code directly?
通常情况下,您会调用 Parallel.Invoke
进行多项工作。如果您串行执行这些工作,则(可能)比并行执行它们花费的时间更长。
“并行执行”与“在后台执行”不同 - 您似乎在寻找后者,但这不是 Parallel.Invoke
的目的。
如果您只想启动任务,请使用 Task.Run
(或 .NET 4.5 之前的 Task.Factory.StartNew
)。 Parallel.Invoke
专门用于并行执行一堆操作,然后等待这些并行操作完成。
作为一个具体的例子,你可以通过分区来执行排序,然后递归地并行地对枢轴的两边进行排序。这样做会使用多个内核,但您通常仍希望等到整个排序完成后再继续。
关于c# - Parallel.Invoke() 无需等待执行完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21441914/