ノードは「トランザクション駆動」および非同期「I/O」特性を備えているため、ノンブロッキングの非同期操作です。同時リクエストごとに、サーバーはリクエストの起動イベントを登録し、コールバックを返します。イベント処理を実行し、処理完了後にコールバック関数を実行し、次のイベント処理を実行することで、ノードは高い同時実行性を実現します。
このチュートリアルの動作環境: Windows10 システム、nodejs バージョン 12.19.0、Dell G3 コンピューター。
Nodejs はノンブロッキングの非同期操作です。同時リクエストごとに、サーバーはリクエストの起動イベント (I/O) を登録し、コールバック関数を与えます (このプロセスは新しい接続リクエストをブロックしません)。イベント処理(I/O)を順番に実行し、処理完了後にコールバック関数を実行し、次のイベント処理(I/O)を実行します。
ノードが高い同時実行性を達成できる理由を説明する前に、ノードの他のいくつかの機能を理解しておくとよいでしょう:
シングルスレッド
まず明確にしましょう概念として、ノードはブラウザの JavaScript と同じシングルスレッドであり、ノードでは JavaScript のメイン スレッドと他のスレッド (I/O スレッドなど) が状態を共有できません。
シングルスレッドの利点は次のとおりです:
マルチスレッドのようなスレッド間の状態同期に注意を払う必要がありません
# エラーによりアプリケーション全体が終了します
#非同期 I/O
それどころか、ノードのパフォーマンスは非常に高いです。その理由の 1 つは、ノードに非同期 I/O 機能があり、I/O リクエストが発生すると、ノードはそのリクエストに対して I/O スレッドを提供することです。その後、ノードは I/O 操作プロセスを気にせず、メインスレッド上でイベントの実行を継続し、リクエストがコールバックを返すときにのみ処理する必要があります。つまり、ノードはリクエストを待つ時間を大幅に節約します。
これは、ノードが高い同時実行性をサポートする重要な理由の 1 つでもあります。実際、I/O 操作だけでなく、ノードのほとんどの操作はこの非同期方法で実行されます。これはオーガナイザーのようなもので、個人的にすべてを行う必要はなく、チーム全体が効率的に運営できるように、メンバーに正しい操作方法、フィードバックの受け入れ方法、重要な手順の処理方法を伝えるだけで十分です。トランザクション ドライバー
もう一度質問したいかもしれません。ノードはリクエストがコールバックを返したことをどのようにして認識するのでしょうか。また、これらのコールバックをいつ処理する必要があるのでしょうか?答えは、ノードのもう 1 つの機能であるトランザクション ドライバーです。つまり、メイン スレッドがイベント ループ トリガーを通じてプログラムを実行します。
これは、ノードが高い同時実行性をサポートするもう 1 つの重要な理由です推奨学習: 「
nodejs ビデオ チュートリアル」
以上がなぜノードは高い同時実行性を実現できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。