PHP (または Java/ASP.NET/Ruby) ベースの Web サーバーでは、すべてのクライアント要求が新しいスレッドでインスタンス化されます。しかし、Node.js では、すべてのクライアントが同じスレッドで実行されます (同じ変数を共有することもできます!)。I/O 操作はイベントベースであるため、メイン スレッド ループをブロックしないことを理解しています。
私が理解できないのは、ノードの作成者がノードをシングルスレッドにすることを選択した理由です。それは物事を難しくします。たとえば、メイン スレッドがブロックされる (そして新しいクライアント リクエストがブロックされる) ため、CPU を集中的に使用する関数を実行できないため、プロセスを生成する必要があります (つまり、別の JavaScript ファイルを作成し、別のノード プロセスを実行する必要があります)。それ)。ただし、前述のように、各クライアントは異なるスレッド上にあるため、PHP の CPU 集中型タスクは他のクライアントをブロックしません。マルチスレッド Web サーバーと比較して、その利点は何ですか?
注: これを回避するためにクラスタリングを使用しましたが、きれいではありません。