2

EnumerablePartitionerOptions.NoBuffering各オブジェクトのプロセスに多くの時間がかかるオブジェクトのコレクションがある場合、まったく使用しないこと の違いは何Partitionerですか?

http://msdn.microsoft.com/en-us/library/system.collections.concurrent.enumerablepartitioneroptions.aspx

EnumerablePartitionerOptions.NoBuffering:

列挙可能なソースから項目を 1 つずつ取得し、複数のスレッドからより効率的にアクセスできる中間ストレージを使用しないパーティショナーを作成します。このオプションは、低レイテンシ (項目がソースから利用可能になるとすぐに処理される) のサポートを提供し、項目間の依存関係の部分的なサポートを提供します (スレッド自体が処理を担当する項目を待機してデッドロックすることはできません)。

ありがとうございました。

更新: 誰が速い? なぜ?

IEnumerable<int> Numbers1 = Enumerable.Range(1, 100);
Parallel.ForEach(Numbers1, (number1) => VeryExpensiveMethod(number1));
            //
            //
Partitioner<int> Numbers2 = Partitioner.Create(Enumerable.Range(1, 100),   EnumerablePartitionerOptions.NoBuffering);
Parallel.ForEach(Numbers2, (number1) => VeryExpensiveMethod(number1));
4

0 に答える 0