2

この質問を参照する: Is ASP.NET multithreaded (how does it execute requests)、これはスレッド化の正しい解釈でしょうか: ASP.NET には、アプリケーション インスタンスごとに 1 つのワーカー プロセスがあります。独自のアプリケーション プールを使用してマルチスレッド化されています。スレッドの大部分は、サービス (ユーザー) 要求に使用されます。各リクエスト (ユーザー セッション) は 1 つのスレッドです。対応する応答は、別のスレッドである可能性があります。ユーザー要求は、それ自体がマルチスレッドである ISAPI から複数のスレッドとして送信されます。

AJAX はマルチスレッドではありません。非 AJAX Web サイトと同じスレッド モデルを使用します。ページ要求 (ajax または非 ajax) により、サーバーで複数のスレッドが使用される場合がありますが、クライアントでは 1 つのスレッドのままです (ブラウザーは単一のスレッドを使用します)。

4

1 に答える 1

2

要するに、はい。ASP.NETでは、要求/応答は通常、単一のスレッドで処理されます...「要求」と「応答」の明確な区別はありません。ISAPIが要求情報をASP.NETハンドラーに渡すだけで、適切なコードを作成し、出力を記述します。(ASP.NETに負荷がかかっていて、使用可能なスレッドを効率的に使用する必要がある場合に、あるスレッドから別のスレッドに要求を移行するメカニズムがありますが、これがいつ、なぜ発生するかについて、詳細なレベルで100%確信はありません。 )。

ブラウザ側のJavaScriptとAJAXはマルチスレッドではありませんが、AJAX呼び出しは非同期であり、応答はイベント駆動型であるため、一部の人にはそのように見える可能性があります。つまり、リクエストがサーバーにディスパッチされると、JavaScriptスレッドはブロックされません。サーバーにさらにリクエストを送信するのは無料で、応答は送信されたのと同じ順序で返される場合と返されない場合があります。ただし、コアには実際には1つのスレッドしかないため、2つの応答が同時に返されると、一方は終了するまでもう一方の実行をブロックします。

于 2009-02-15T18:20:00.373 に答える