各オブジェクトを並行して処理したい膨大なコレクションがあります。同じことを同期的に行うには、通常、単純な「foreach」が必要です。
私のシナリオで何を使用するか、つまり Parallel.ForEach または MyCollection.AsParallel().ForAll() のどちらかを考えてみてください。
どちらか一方を使用する利点を教えてください。
各オブジェクトを並行して処理したい膨大なコレクションがあります。同じことを同期的に行うには、通常、単純な「foreach」が必要です。
私のシナリオで何を使用するか、つまり Parallel.ForEach または MyCollection.AsParallel().ForAll() のどちらかを考えてみてください。
どちらか一方を使用する利点を教えてください。
私の見方では、 を並列化するforeach
だけなら、その並列バージョンである を使用する必要がありますParallel.ForEach()
。
ParallelEnumerable.ForAll()
これは、LINQ クエリの後に a が続き、foreach
両方を並列化したいという特定のケース用です。したがって、LINQ クエリを追加AsParallel()
して並列化し、次に をforeach
に変更して並列化しForAll()
ます。
私の2セント:
拡張メソッドを使用して、目的の並列処理レベルをForAll
指定できます。WithDegreeOfParallelism
最大レベルをForEach
制限することしかできません。
基本的に、ForAll
より多くのスレッドを強制的に使用できます。