c# - Parallel.Invoke() 无需等待执行完成

标签 c# multithreading parallel-processing task-parallel-library

请注意,我知道 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/

相关文章:

python - CherryPy 用于网络托管控制面板应用程序

c++ - 为什么C++上的互斥锁会如此严重地影响多线程效率?

python - 使用 python 进行子进程管理

C#:获取 gtk#-buttons 数组中哪个按钮被按下?

c++ - 通过线程句柄获取线程的 TIB/TEB (2015)

c# - 编码变量参数 - __arglist 或替代

c - 线程和并行编程

c - C语言中快速排序的并行化

c# - 从 CreateFile 产生的句柄构造一个 FileStream 给出一个空流

c# - Linq 2 XML : How to retrieve web methods' names from a wsdl document?