私は最近、ノンブロッキング IO と驚異的な速度で知られる V8 上の JavaScript ライブラリである node.js について学び始めました。
私の理解では、ノードは IO が応答するのを待ちませんが、未完了の操作をチェックし続け、IO が応答するとすぐにそれらを続行/完了するイベント ループ (ゲーム ループに似ています) を実行します。ノードのパフォーマンスは Apache HTTPD と比較され、ノードはより少ないメモリを使用しながら大幅に高速化されました。
Apache について読んだ場合、ユーザーごとに 1 つのスレッドを使用していることがわかります。これにより、大幅に速度が低下すると思われます。ここで私の質問が表示されます。
スレッドを、ノードがイベント ループで内部的に行うことと比較すると、類似点が見え始めます。どちらも、リソースの応答を待機する未完了のプロセスの抽象化であり、操作が定期的に進行したかどうかをチェックし、その後、リソースを占有しないようにします。 CPU を一定時間 (少なくとも、良いブロッキング API は再チェックする前に数ミリ秒間スリープすると思います)。
では、スレッドをこれほどまでに悪化させている印象的で重大な違いはどこにあるのでしょうか?