下面的代码片段之间有什么区别吗?如果是这样,是什么?
myList.AsParallel().ForAll(i => { /*DO SOMETHING*/ });
和
Parallel.ForEach(mylist, i => { /*DO SOMETHING*/ });
主线程会等待所有子线程完成吗?在MVC应用程序中,如果我在控制器操作中进行并行处理,那么在主线程完成后,子线程会发生什么情况。它们是会被中止,还是会在主线程完成后才被完成?
发布于 2013-01-08 21:17:08
Parallel.ForEach()
正是为这类代码设计的。
另一方面,ForAll()
旨在用于(可能很复杂的) PLINQ查询的末尾。
正因为如此,我认为Parallel.ForEach()
是这里更好的选择。
在这两种情况下,当前线程都将用于执行计算(以及线程池中的一些线程),并且该方法仅在所有处理完成后才会返回。
发布于 2014-01-28 16:43:17
您可以选择使用AsParallel().AsOrdered()对元素进行排序。在Parallel.ForEach中订购不是开箱即用的,我们需要这样做。
https://stackoverflow.com/questions/14206834
复制相似问题