23

各オブジェクトを並行して処理したい膨大なコレクションがあります。同じことを同期的に行うには、通常、単純な「foreach」が必要です。

私のシナリオで何を使用するか、つまり Parallel.ForEach または MyCollection.AsParallel().ForAll() のどちらかを考えてみてください。

どちらか一方を使用する利点を教えてください。

4

3 に答える 3

23

私の見方では、 を並列化するforeachだけなら、その並列バージョンである を使用する必要がありますParallel.ForEach()

ParallelEnumerable.ForAll()これは、LINQ クエリの後に a が続き、foreach両方を並列化したいという特定のケース用です。したがって、LINQ クエリを追加AsParallel()して並列化し、次に をforeachに変更して並列化しForAll()ます。

于 2013-06-04T16:29:11.180 に答える
3

私の2セント:

拡張メソッドを使用して、目的の並列処理レベルをForAll指定できます。WithDegreeOfParallelism

最大レベルをForEach制限することしかできません。

基本的に、ForAllより多くのスレッドを強制的に使用できます。

于 2015-08-13T14:37:40.737 に答える