2

Parallel.Forや同様の構造を実行する場合、TPLはタスクにワークスティーリングキューを使用することを理解しています。

これを正しく理解していれば、コンストラクトはいくつかのタスクを起動し、それぞれがアイテムの処理を開始します。タスクの1つが割り当てられたアイテムを完了すると、まだ完了していない他のタスクからアイテムを盗み始めます。これにより、アイテム1〜100の処理が安価で、アイテム101〜200のコストが高く、2つのタスクの一方がもう一方が完了するまでアイドル状態になるという問題が解決されます。(私はこれが単純化された説明であることを知っています。)

ただし、これはターミナルサーバーまたはWebアプリケーションでどのように拡張されますか(Webアプリで実行されるコードでTPLを使用すると仮定)?アプリケーションのインスタンスがN個並んで実行されているという理由だけで、CPUがタスクで飽和するリスクを冒すことはできますか?

このトピックに関する私が読むべき情報はありますか?特に何も見つけていませんが、ないという意味ではありません。

4

1 に答える 1

1

TPLを使用して、非同期モデルに移行することにより、I/Oバウンド操作を改善できる場合があります。また、低負荷の状況でWebサーバーで使用可能な未使用のプロセッサー容量をさらに活用することにより、要求の待ち時間を改善できる場合があります。プロセッサがすでに100%使用されている高負荷では、並列処理を追加するとサーバーのスループットが低下するため、これについてはかなり慎重に検討する必要があります。

これについては、ParallelExtensionsTeamのブログで説明されています。

ASP.NETアプリでの.NET4の並列拡張機能の使用

同じ議論がターミナルサーバーアプリケーションにも当てはまると思います。

于 2010-05-07T15:23:03.050 に答える