Parallel.ForEach和ParallelEnumerable.ForAll之间的区别

Sta*_* R. 4 .net c# linq plinq c#-4.0

我有一个Model类的集合,我不想将每个类单独映射到View Model类.

我可以使用Parallel.ForEach或者ParallelEnumerable.ForAll,那么2,如果有的话有什么区别?

我在MSDN上找不到任何东西.

Ree*_*sey 5

我可以使用Parallel.ForEach或ParallelEnumerable.ForAll,那么2之间有什么区别,如果有的话?

Parallel.ForEachforeach在普通代码中使用的等价物.

ParallelEnumerable.ForAll方法实际上是等效的List<T>.ForEach.

两者都将执行和工作类似,虽然该ForAll方法要求您已经使用PLINQ,因为您需要一个ParallelEnumerable. Parallel.ForEach任何直接工作IEnumerable<T>.

一般来说,我倾向于选择Parallel.ForEach,因为唯一的目的ForAll是引起副作用.这有一些缺点,正如Eric Lippert详细描述的那样.

  • 我想我在这里浪费时间,因为我必须将所有映射的项目收集回到并发列表中,在上下文切换方面可能不值得一个小列表. (2认同)