IISのWebアプリケーションで実行する場合のSystem.Threading.Threadpoolに関する一般的な質問があります。一度に2つのリクエストを実行し、ThreadPool.QueueUserWorkItemメソッドを介していくつかのスレッドを起動するとします。2つのリクエストはThreadPoolを共有しますか、それとも2つのリクエストからのThreadPoolへの呼び出しは2つの別々のプールで動作しますか?
これはIIS6および7にあります。
洞察をありがとう。
IISのWebアプリケーションで実行する場合のSystem.Threading.Threadpoolに関する一般的な質問があります。一度に2つのリクエストを実行し、ThreadPool.QueueUserWorkItemメソッドを介していくつかのスレッドを起動するとします。2つのリクエストはThreadPoolを共有しますか、それとも2つのリクエストからのThreadPoolへの呼び出しは2つの別々のプールで動作しますか?
これはIIS6および7にあります。
洞察をありがとう。
ThreadPoolクラスに関するMSDNドキュメントからの引用は次のとおりです。
プロセスごとに1つのスレッドプールがあります。スレッドプールのデフォルトサイズは、使用可能なプロセッサごとに250ワーカースレッドで、1000 I/O完了スレッドがあります。
IIS6およびIIS7では、特定のASP.NETアプリケーションは、アプリケーションプールインフラストラクチャを介して単一のプロセス( w3wp.exe )内でホストされます。
アプリケーションプールは、複数のWebアプリケーションを異なるAppDomainに保持することでホストできますが、サーバー上の1つの物理プロセス内で実行されます。
これらの2つの事実は、実際には、実行中のWebアプリケーションインスタンスのすべてのスレッドが同じ.NETスレッドプール内で実行されることを意味します。