ホームページ > ウェブフロントエンド > フロントエンドQ&A > なぜノードは高い同時実行性を実現できるのでしょうか?

なぜノードは高い同時実行性を実現できるのでしょうか?

WBOY
リリース: 2022-04-22 14:45:21
オリジナル
3107 人が閲覧しました

ノードは「トランザクション駆動」および非同期「I/O」特性を備えているため、ノンブロッキングの非同期操作です。同時リクエストごとに、サーバーはリクエストの起動イベントを登録し、コールバックを返します。イベント処理を実行し、処理完了後にコールバック関数を実行し、次のイベント処理を実行することで、ノードは高い同時実行性を実現します。

なぜノードは高い同時実行性を実現できるのでしょうか?

このチュートリアルの動作環境: Windows10 システム、nodejs バージョン 12.19.0、Dell G3 コンピューター。

ノードが高い同時実行性を実現できる理由

Nodejs はノンブロッキングの非同期操作です。同時リクエストごとに、サーバーはリクエストの起動イベント (I/O) を登録し、コールバック関数を与えます (このプロセスは新しい接続リクエストをブロックしません)。イベント処理(I/O)を順番に実行し、処理完了後にコールバック関数を実行し、次のイベント処理(I/O)を実行します。

ノードが高い同時実行性を達成できる理由を説明する前に、ノードの他のいくつかの機能を理解しておくとよいでしょう:

シングルスレッド

まず明確にしましょう概念として、ノードはブラウザの JavaScript と同じシングルスレッドであり、ノードでは JavaScript のメイン スレッドと他のスレッド (I/O スレッドなど) が状態を共有できません。

シングルスレッドの利点は次のとおりです:

  • マルチスレッドのようなスレッド間の状態同期に注意を払う必要がありません

  • ## スレッドの切り替えによるオーバーヘッドが発生しない

  • #デッドロックが発生しない
  • # もちろん、シングル スレッドには多くの欠点もあります。

マルチコア CPU を完全に活用できない
  • 大量の計算が CPU を占有すると、アプリケーションのブロックが発生します (つまり、適切ではありません)。 CPU 集中型アプリケーションの場合)
  • # エラーによりアプリケーション全体が終了します

  • #非同期 I/O

ノードがシングルスレッドなので、すべてのイベントが 1 つのスレッドで処理されるのですが、これは非常に非効率であり、高い同時実行性に反しているのではないかと疑問に思われるかもしれません。

それどころか、ノードのパフォーマンスは非常に高いです。その理由の 1 つは、ノードに非同期 I/O 機能があり、I/O リクエストが発生すると、ノードはそのリクエストに対して I/O スレッドを提供することです。その後、ノードは I/O 操作プロセスを気にせず、メインスレッド上でイベントの実行を継続し、リクエストがコールバックを返すときにのみ処理する必要があります。つまり、ノードはリクエストを待つ時間を大幅に節約します。

これは、ノードが高い同時実行性をサポートする重要な理由の 1 つでもあります。

実際、I/O 操作だけでなく、ノードのほとんどの操作はこの非同期方法で実行されます。これはオーガナイザーのようなもので、個人的にすべてを行う必要はなく、チーム全体が効率的に運営できるように、メンバーに正しい操作方法、フィードバックの受け入れ方法、重要な手順の処理方法を伝えるだけで十分です。

トランザクション ドライバー

もう一度質問したいかもしれません。ノードはリクエストがコールバックを返したことをどのようにして認識するのでしょうか。また、これらのコールバックをいつ処理する必要があるのでしょうか?

答えは、ノードのもう 1 つの機能であるトランザクション ドライバーです。つまり、メイン スレッドがイベント ループ トリガーを通じてプログラムを実行します。

これは、ノードが高い同時実行性をサポートするもう 1 つの重要な理由です

推奨学習: 「

nodejs ビデオ チュートリアル

なぜノードは高い同時実行性を実現できるのでしょうか?

以上がなぜノードは高い同時実行性を実現できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート