c# - AsParallel.ForAll 与 Parallel.ForEach

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

下面的代码片段之间有什么区别吗?如果是,是什么?

myList.AsParallel().ForAll(i => {/*DO SOMETHING*/});

Parallel.ForEach(mylist, i => {/*DO SOMETHING*/});

主线程会等待所有子线程完成吗?在 MVC 应用程序中,如果我在我的 Controller 操作中进行并行处理,那么在主线程完成后子线程会发生什么。它们会被中止还是会在主线程完成后完成?

最佳答案

Parallel.ForEach() 正是为这种代码设计的。

另一方面,ForAll() 旨在用于(可能很复杂的)PLINQ 查询的末尾。

因此,我认为 Parallel.ForEach() 是更好的选择。

在这两种情况下,当前线程将用于执行计算(连同线程池中的一些线程)并且该方法将仅在所有处理完成后返回。

关于c# - AsParallel.ForAll 与 Parallel.ForEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14206834/

相关文章:

c# - Y型任务执行

c# - 如何在从中删除项目之前在管道 block 中执行任务直到集合已满

c# - ASP.NET:带有自定义用户表的自定义 MembershipProvider

c - OpenMP 对数组中每个元素的缩减

c - 我想使用 OpenMP 并行化 C 代码片段,但得到错误的输出

java - 具有并行处理功能的 Apache Camel 多播不会将异常传播到死信处理程序

c# - 如何在 .NET/C# 中切换异步和同步

c# - 我应该在 Reactive Extensions (Rx) Subject<T> 上调用 Dispose

c# - 如何避免 TypeInitializer 异常?

c# - 是否可以在 iMac 上托管 .net Web 服务?