ノードの非同期メカニズムは「イベント」に基づいており、すべての I/O、ネットワーク通信、データベース クエリはノンブロッキング方式で実行され、返された結果はイベント ループによって処理されます。ノードは同時に 1 つのイベントのみを処理し、完了後すぐにイベント ループに入り、後続のイベントを確認します。このようにして、CPU とメモリは、時間のかかる I/O やその他の操作を並行して実行できるようにしながら、同時に 1 つの処理に集中できます。
このチュートリアルの動作環境: Windows 7 システム、nodejs バージョン 16、DELL G3 コンピューター。
#NodeJS はシングルスレッドです。シングルスレッドには次の利点があります:
シンプル
高パフォーマンス、頻繁なスレッド切り替えのオーバーヘッドを回避
#
高い同時実行性を解決するにはどうすればよいですか?
Node は、非同期 IO とイベント駆動型 (コールバック関数) を使用して、高い同時実行性の問題を解決します。 一般に、高同時実行性ソリューションはマルチスレッド モデルを提供し、ビジネス ロジックごとにスレッドを提供し、システム スレッドの切り替えを通じて同期 I/O 呼び出しの時間オーバーヘッドを補います。 Apache と同様、リクエストごとに 1 つのスレッドがあります。 NodeJS はシングルスレッド モデルを使用し、頻繁なコンテキストの切り替えを避けるためにすべての I/O に非同期リクエスト メソッドを使用します。NodeJS の実行時にイベント キューを維持します。プログラムは実行中にイベントに入ります。ループは待機します。各非同期 I/O リクエストは完了すると、実行を待機するためにイベント キューにプッシュされます。NodeJS の非同期メカニズムはイベントに基づいています。すべての I/O、ネットワーク通信、データベース クエリはノンブロッキング方式で実行され、返された結果はイベント ループによって処理されます。図に示すように:
Node.js プロセスは同時に 1 つのイベントのみを処理します。完了後、すぐにイベント ループに入り、後続のイベントを確認します。 。この利点は、時間のかかる I/O やその他の操作を並行して実行できるようにしながら、CPU とメモリが同時に 1 つの処理に集中できることです。低速接続攻撃の場合、Node.js はイベント キューにリクエストを追加するだけで、オペレーティング システムの応答を待つため、マルチスレッドのオーバーヘッドが発生せず、Web アプリケーションの堅牢性が大幅に向上し、悪意のある攻撃を防ぐことができます。イベント ループ メカニズム
いわゆるイベント ループとは、NodeJS がイベント メカニズムを使用してすべての非同期操作を解決し、継続的にループするスレッドがあることを意味します。イベントキューを検出します。 NodeJS のすべてのロジックはイベントのコールバック関数であるため、NodeJS は常にイベント ループ内にあり、プログラム エントリはイベント ループ内の最初のイベントのコールバック関数です。イベント コールバック関数は、I/O リクエストを発行するか、イベントを直接発行し、実行後にイベント ループに戻ります。イベント ループは、プログラムが終了するまで、イベント キューに未処理のイベントがないかチェックします。 NodeJS のイベント ループは開発者には見えず、libev ライブラリによって実装されます。libev は、検出できるアクティブなイベント リスナーがあるかどうかを常にチェックし、イベント リスナーが検出されなくなるまでイベント ループを終了せず、プログラムが終了します。 ノード関連の知識の詳細については、nodejs チュートリアル を参照してください。
以上がノードの非同期メカニズムは何に基づいていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。