【发布时间】:2012-12-21 19:47:41
【问题描述】:
下面的代码sn-ps有什么区别吗?如果有,是什么?
myList.AsParallel().ForAll(i => { /*DO SOMETHING*/ });
和
Parallel.ForEach(mylist, i => { /*DO SOMETHING*/ });
主线程会等待所有子线程完成吗?在 MVC 应用程序中,如果我在控制器操作中进行并行处理,那么在主线程完成后子线程会发生什么情况。它们会被中止还是在主线程完成后也会完成?
【问题讨论】:
-
建议大家阅读:reedcopsey.com/2010/02/03/…
-
如果我是你,我会为你的 MVC 并行处理问题打开另一个问题。
-
请小心 AsParallel().ForAll(),因为它会导致不可预测的结果。例如,我有一个按钮可以在单击时执行此代码: myEnumerable.AsParallel().ForAll(i as string => otherDictionary.Add(i, 0)) 。它会将 null 作为 key 添加到 otherDictionary。我不得不重写以使用 foreach 循环。很奇怪。
-
@YukiSakura,也许你没有使用 ConncurrentDictionary?我认为我们不应该因为没有完整示例的注释而害怕使用使用代码。最好将您的问题作为一个单独的问题发布。
标签: c# parallel-processing task-parallel-library