Parallel ForEachのような機能を提供するよく知られた、よくテストされたナゲットパッケージがありますが、同時に実行される並行タスクの量を制限できますか?ForEach実行可能な並行タスクの量に制限がある非同期?
私は自分で書くことができるので、コードサンプルを尋ねるのではなく、という人気のあるナゲットパッケージがあるかどうかを尋ねるだけです。
ありがとうございます!このような
Parallel ForEachのような機能を提供するよく知られた、よくテストされたナゲットパッケージがありますが、同時に実行される並行タスクの量を制限できますか?ForEach実行可能な並行タスクの量に制限がある非同期?
私は自分で書くことができるので、コードサンプルを尋ねるのではなく、という人気のあるナゲットパッケージがあるかどうかを尋ねるだけです。
ありがとうございます!このような
何かがあなたが並列度を制御することができます:あなたは1でMaxDegreeOfParallelism
を置く場合は、各項目を順次処理されていることがわかります
var items = Enumerable.Range(0, 50);
var parallelOptions = new ParallelOptions() { MaxDegreeOfParallelism = 3 };
Parallel.ForEach(items, parallelOptions,
i =>
{
Task.Delay(1000).GetAwaiter().GetResult(); // It's just an example
Console.WriteLine($"{DateTime.Now.ToLongTimeString()} I'm {i}");
});
。
MSDN:MaxDegreeOfParallelism
このParallelOptionsインスタンスによって有効にされる同時実行タスクの最大数を取得または設定します。
これはIOが起こっている間にスレッドをブロックします。実行したいASYNCコードがたくさんあります。スレッドをブロックする理由はありません。 –
しかしParallel.ForEachはすでにParallelOptions経由で構築されたこの能力を持っています。 – Evk
しかし、非同期ではありません。 –