次の 2 つの図は、非イベント駆動型 Web サーバー (IIS + C# など) と比較して、イベント駆動型 Web サーバー (Node.js + JavaScript など) でスレッドがどのように機能するかについての私の理解です。
この図から、従来の Web サーバーでは、3 つの長時間実行される操作を実行するために使用されるスレッドの数が、イベント駆動型の Web サーバーよりも多いことがわかります (3 対 1)。
「従来のWebサーバー」のカウントは正しい(3)と思いますが、イベント駆動型のもの(1)については疑問に思います。ここに私の質問があります:
イベント ドリブン シナリオで 1 つのスレッドのみが使用されたと想定するのは正しいですか? それは正しくありません。I/O タスクを処理するために何かが作成されているに違いありません。右?
イベント サーバーはどのように I/O を処理しましたか? I/O がデータベースから読み取ることであったとしましょう。データベースへの接続ジョブを引き渡すために、Web サーバーがスレッドを作成する必要があったのではないでしょうか? 右?
イベント駆動型 Web サーバーが実際に I/O を処理するスレッドを作成した場合、どこで利益が得られるのでしょうか?
私の混乱の考えられる説明は、従来のシナリオとイベント駆動型の両方のシナリオで、実際には I/O を処理するために 3 つの個別のスレッドが作成された(図には示されていません) ということですが、違いは実際にはスレッドの数にあります。 I / Oスレッドではなく、Webサーバー自体。それは正確ですか?