Parallel.ForEach での同時実行性の制御
並列プログラミングでは、ループを並列実行して、複数のスレッドが独立したタスクを同時に実行できるようにすると有益です。ただし、制約のあるリソースを扱う場合は、システムの過負荷を避けるために並列タスクの数を制限することが重要になります。この記事では、Parallel.ForEach ループで並列処理を制限する方法を説明します。
Web ページをダウンロードする Parallel.ForEach ループがある状況を考えてみましょう。帯域幅が過剰にならないようにするには、同時ダウンロードの数を制限する必要があります。タスクにはさまざまな種類の操作が含まれる可能性があるため、従来の Web クローリング ソリューションでは十分ではありません。
並列処理を制限する
Parallel.ForEach ループで使用されるスレッドの数を制御するには、ParallelOptions クラスの MaxDegreeOfParallelism パラメーターを使用できます。このパラメータは、ループを並列実行できるスレッドの最大数を指定します。
<code class="language-csharp">Parallel.ForEach( listOfWebpages, new ParallelOptions { MaxDegreeOfParallelism = 4 }, webpage => { Download(webpage); } );</code>
この例では、MaxDegreeOfParallelism が 4 に設定されています。これは、Web ページを同時にダウンロードするために最大 4 つのスレッドが使用されることを意味します。これにより、帯域幅が制限を超えず、リソースへの過度の圧力が防止されます。
その他のリソース
Parallel.ForEach の詳細については、MSDN ドキュメントを参照してください。
Parallel.ForEach ループで並列度を制御することで、リソースの使用量を効果的に管理し、アプリケーションの最適なパフォーマンスを確保できます。
以上がParallel.ForEach で並列処理を制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。