【发布时间】:2013-06-06 23:54:37
【问题描述】:
我有一个模型类的集合,我不想将每个类单独映射到视图模型类。
我可以使用Parallel.ForEach 或ParallelEnumerable.ForAll,那么两者之间有什么区别(如果有的话)?
我在 MSDN 上找不到任何东西。
【问题讨论】:
我有一个模型类的集合,我不想将每个类单独映射到视图模型类。
我可以使用Parallel.ForEach 或ParallelEnumerable.ForAll,那么两者之间有什么区别(如果有的话)?
我在 MSDN 上找不到任何东西。
【问题讨论】:
我可以使用 Parallel.ForEach 或 ParallelEnumerable.ForAll,那么两者之间有什么区别(如果有的话)?
Parallel.ForEach 相当于在普通代码中使用foreach。
ParallelEnumerable.ForAll 方法实际上等效于 List<T>.ForEach。
虽然ForAll 方法要求您已经使用PLINQ,但两者的执行和工作方式相似,因为您需要ParallelEnumerable。 Parallel.ForEach 直接作用于任何 IEnumerable<T>。
总的来说,我更喜欢Parallel.ForEach,因为ForAll 的唯一目的是引起副作用。这样做有一些缺点,如described in detail by Eric Lippert。
【讨论】:
ParallelEnumerable 需要一个实际的ParallelEnumerable。
Parallel.ForEach 确实并行执行迭代......对吗?
ForAll() 语句,因为 Select 实际上是一个映射操作...