2

私のasp.netアプリケーションが起動すると、プロセスに約40個のスレッドが関連付けられました。これは正常ですか?ノブの質問で申し訳ありません。実行中の実際のスレッド (状態) は、マシンのコアによって異なります。たとえば、4 コアの PC で実行している場合、実行中のスレッド (並列) は約 1 ~ 4 であり、プロセス内のスレッドの総数は約 38 ~ 42 です。24 コアの PC でアプリケーションを実行すると、まだ 38 ~ 42 スレッド程度になります。

実行中のスレッドの数を取得するための私のコード:

((IEnumerable)Process.GetCurrentProcess().Threads)
                .OfType<System.Diagnostics.ProcessThread>()
                .Where(t => t.ThreadState == System.Diagnostics.ThreadState.Running)
                .Count()

スレッドの総数を取得するためのコード:

Process.GetCurrentProcess().Threads.Count

どなたか私のような初心者に説明していただけないでしょうか..

前もって感謝します。

4

1 に答える 1

2

ASP.NET サイトは、一定数のスレッドを持つアプリケーション プールで実行されており、必要に応じてさらに多くのスレッドが生成される可能性があります。各要求は個別のスレッドで処理されるため、必要に応じて新しいスレッドを開始するよりも既存のスレッドを使用する方が高速であるため、IIS はいくつかのスレッドを要求を待機させます。

また、IIS は、アプリケーションが使用するスレッド プールに予備のスレッドを保持します。

そうです、IIS が複数のスレッドを持つのは普通のことです。

于 2013-02-11T13:40:59.233 に答える