Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Parallel.ForEach和ParallelEnumerable.ForAll之间的差异_C#_.net_Linq_C# 4.0_Plinq - Fatal编程技术网

C# Parallel.ForEach和ParallelEnumerable.ForAll之间的差异

C# Parallel.ForEach和ParallelEnumerable.ForAll之间的差异,c#,.net,linq,c#-4.0,plinq,C#,.net,Linq,C# 4.0,Plinq,我有一个模型类的集合,我不想单独映射每个类来查看模型类 我可以使用Parallel.ForEach或ParallelEnumerable.ForAll,那么2之间的区别是什么 我在MSDN上找不到任何东西 我可以使用Parallel.ForEach或ParallelEnumerable.ForAll,那么2之间的区别是什么 Parallel.ForEach相当于在普通代码中使用ForEach ParallelEnumerable.ForAll方法实际上相当于 虽然ForAll方法要求您已经在使用

我有一个模型类的集合,我不想单独映射每个类来查看模型类

我可以使用Parallel.ForEach或ParallelEnumerable.ForAll,那么2之间的区别是什么

我在MSDN上找不到任何东西

我可以使用Parallel.ForEach或ParallelEnumerable.ForAll,那么2之间的区别是什么

Parallel.ForEach相当于在普通代码中使用ForEach

ParallelEnumerable.ForAll方法实际上相当于

虽然ForAll方法要求您已经在使用PLINQ,因为您需要一个并行可枚举文件,但两者的性能和工作方式都是类似的。Parallel.ForEach直接使用任何IEnumerable


一般来说,我倾向于选择Parallel.ForEach,因为ForAll的唯一目的是引起副作用。这有一些缺点,比如。

uh-huh,所以基本上它们几乎相同,除了事实上ParallelEnumerable需要一个实际的ParallelEnumerable。我同意副作用部分,但我想在这种情况下并行映射项,我认为这样做是有效的。如果我错了,请纠正我,但是Parallel.ForEach确实并行执行迭代……对吗?@StanR。是的。映射建议使用PLINQ Select子句,而不是ForAll语句,因为Select实际上是一种映射操作……我认为我在这里浪费时间,因为我必须将所有映射项收集回一个并发列表中,在上下文切换方面,对于一个小列表来说,这可能不值得。@StanR。取决于以及您对映射所做的操作-如果您正在构建队列,并且需要进行处理,则可以直接从PLINQ构建队列。通过选择结果