首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AsParallel.ForAll vs Parallel.ForEach

AsParallel.ForAll vs Parallel.ForEach
EN

Stack Overflow用户
提问于 2013-01-08 09:14:23
回答 2查看 31.6K关注 0票数 39

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

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

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

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

EN

回答 2

Stack Overflow用户

发布于 2013-01-08 21:17:08

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

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

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

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

票数 22
EN

Stack Overflow用户

发布于 2014-01-28 16:43:17

您可以选择使用AsParallel().AsOrdered()对元素进行排序。在Parallel.ForEach中订购不是开箱即用的,我们需要这样做。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14206834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档