.net Parallel.ForEach vs AsParallel().ForAll
我有一个巨大的集合,我想以并行方式处理每个对象。同步执行同样的操作通常需要一个简单的“foreach” 只是想知道在我的场景中使用什么,即Parallel.ForEach或MyCollection.AsParallel().ForAll().net Parallel.ForEach vs AsParallel().ForAll,.net,task-parallel-library,.net,Task Parallel Library,我有一个巨大的集合,我想以并行方式处理每个对象。同步执行同样的操作通常需要一个简单的“foreach” 只是想知道在我的场景中使用什么,即Parallel.ForEach或MyCollection.AsParallel().ForAll() 你能告诉我使用其中一个与另一个的好处吗。两个都选一个,然后选出赢家 我发现Parallel.ForEach在最令人愉快的并行场景中表现得更好。它似乎使用了更先进的工作平衡模型。PLINQ主要用于并行查询。在我看来,如果您只想并行化foreach,那么应该使用
你能告诉我使用其中一个与另一个的好处吗。两个都选一个,然后选出赢家
我发现Parallel.ForEach在最令人愉快的并行场景中表现得更好。它似乎使用了更先进的工作平衡模型。PLINQ主要用于并行查询。在我看来,如果您只想并行化
foreach
,那么应该使用它的并行版本,即parallel.foreach()
ParallelEnumerable.ForAll()
适用于以下特定情况:您有一个LINQ查询,后跟一个foreach
,并且您希望将两者并行化。因此,您要做的是通过添加aspallel()
来并行化LINQ查询,然后通过将foreach
更改为ForAll()
来并行化My 2 cents:
使用ForAll
可以使用WithDegreeOfParallelism
扩展方法指定所需的并行级别
使用ForEach
只能限制最大级别
基本上,你可以强迫所有人使用更多的线程;可能重复的