27

Web.Config の processmodel 要素を見ると、2 つの属性があります。

maxWorkerThreads="25" 
maxIoThreads="25"

ワーカースレッドと I/O スレッドの違いは何ですか?

4

2 に答える 2

26

基本的に多くはありませんが、ASP.NET と IIS が I/O 待機オブジェクトをどのように割り当て、ネットワークを介した通信とデータ転送の競合と待ち時間をどのように管理するかがすべてです。

I/O スレッドは、(名前が示すように) I/O を実行し、「長い」時間 (数百ミリ秒) 待機する必要があるため、そのように確保されます。また、Windows カーネルの I/O 完了ポート機能を利用するために、最適化して別の方法で使用することもできます。スループットを維持するために、単一の I/O スレッドが複数の完了ポートを管理している場合があります。

Windows には I/O ブロッキングを処理するための多くの機能がありますが、ASP.NET/.NET には「スレッド」という単純な概念があります。ASP.NET は、OS のアンマネージ スレッド機能をさらに使用することで、I/O を最適化できます。.NET が提供する多くの機能が失われるため、すべてのスレッドに対して常にこれを実行することは望ましくありません。そのため、スレッドの使用目的に違いがあります。

ワーカー スレッドは、通常の「作業」または単純なコード/処理が行われるスレッドです。ワーカー スレッドは、多くのことをブロックしたり待機したりする可能性は低く、実行時間も短いため、処理能力とスループットを最大化するには、より積極的なスケジューリングが必要です。

[編集]: この質問に特に関連するこのリンクも見つけました: http://blogs.msdn.com/ericeil/archive/2008/06/20/windows-io-threads-vs-managed-io-threads .aspx

于 2008-09-26T02:35:57.650 に答える
12

chadmyersに追加するだけです... I / Oスレッドは、ASP.NETが要求を処理する古い方法だったようです。

「IIS 5.0 の要求は通常、I/O スレッド、または名前付きパイプへの非同期書き込みを使用してワーカー プロセスにディスパッチされるため、非同期 I/O を実行するスレッドを介して処理されます。」

IIS6.0 ではこれが変更されました。

「したがって、すべての要求は CLR スレッド プールから引き出されたワーカー スレッドによって処理され、I/O スレッドでは処理されません。」

ソース: http://msdn.microsoft.com/hi-in/magazine/cc164128(en-us).aspx

于 2008-09-26T03:07:42.660 に答える