ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js はシングルスレッドですか?

Node.js はシングルスレッドですか?

WBOY
WBOYオリジナル
2022-04-19 17:05:292789ブラウズ

Node.js はデフォルトでシングルスレッドです。JavaScript エンジンのため、node.js はシングルスレッドの非同期ノンブロッキング モードを採用しています。1 つの nodejs はマルチコア リソースを利用できませんが、3 番目のノードがあります。マルチスレッドサポートを提供できる-party ライブラリが提供されていますが、メインスレッドはシングルスレッドであり、メインスレッドでの操作は同期的にブロックされます。

Node.js はシングルスレッドですか?

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

node.js はシングルスレッドですか?

Node.js はデフォルトでシングルスレッドであり、node.js はシングルスレッドの非同期ノンブロッキング モードを採用しています。

node.js は、シングルスレッドの非同期ノンブロッキング モードを採用しています。そのシングル スレッドは、独自の Javascript 実行環境のシングル スレッドを指します。Node.js には、JavaScript の実行時に新しいスレッドを作成する機能がありません。非同期は、Libuv とそのイベント ループによって実現されます。

Node は、メイン スレッドがシングルスレッドであり、メイン スレッド内の操作が同期的にブロックされるというだけのことです。ただし、すべての非同期操作は IO スレッド プールにスローされ、メイン スレッドは特定のイベント ポーリング メカニズムを通じて IO スレッド プールと対話して、非同期データを取得します。

node.js のパフォーマンスは最高ではありません。JavaScript エンジンのため、node.js はデフォルトでシングルスレッドであり、node.js アプリケーションはマルチコア リソースを利用できません。

ただし、マルチスレッド サポートを提供するサードパーティ ライブラリもありますが、シームレスではありません。 Node.js は I/O ボトルネックを解決します (従来のテクノロジーと比較して、同期ブロッキングにより無駄なスレッドが呼び出されます)。I/O 速度は向上しませんが、リソース スケジューリングはより効率的です。 I/O 速度が解決されない場合、node.js は同時に多くのリクエストを処理できるとしか言えませんが、各リクエストの応答時間は依然として長いか、それ以上です。

ノードはシングルスレッドですが、大量の同時リクエストをどのように処理するのでしょうか?

イベント駆動型に依存します。

Node.js はシングルスレッドですか?

各 Node.js プロセスには、プログラム コードを実行するメイン スレッドが 1 つだけあり、実行コンテキスト スタックを形成します。

メインスレッドに加えて、「イベントキュー」も維持されます。ユーザーのネットワーク リクエストまたはその他の非同期操作が到着すると、ノードはそれをイベント キューに入れます。この時点では、すぐには実行されず、コードはブロックされません。メイン スレッド コードが実行されるまで継続されます。完了。

メイン スレッド コードの実行が完了した後、イベント ループ、つまりイベント ループ メカニズムを通じて、イベント キューの先頭から最初のイベントの取得を開始し、そこからスレッドを割り当てます。スレッド プールを使用してイベントを実行し、次にダウンして 2 番目のイベントを取り出し続け、スレッド プールからスレッドを割り当てて実行します。次に、3 番目、4 番目のイベントを実行します。メインスレッドは、イベントキュー内のすべてのイベントが実行されるまで、イベントキュー内に未実行のイベントがあるかどうかを継続的にチェックし、その後、新しいイベントがイベントキューに追加されるたびに、メインスレッドにそれらを取り出すように通知されます。それらを注文して EventLoop に渡して処理します。イベントが実行されると、メインスレッドに通知され、メインスレッドがコールバックを実行し、スレッドがスレッド プールに返されます。

メインスレッドは引き続き上記の 3 番目のステップを繰り返します。

NodeJs の単一スレッドは単なるメイン スレッドです。基本的に非同期操作はスレッド プールによって完了します。ノードはすべてのブロック操作を実装のために内部スレッド プールに渡し、継続的なラウンドトリップ スケジューリングのみを担当します。 、実際の I/O 操作は実行されないため、非同期のノンブロッキング I/O が実現されます。これがノードのシングルスレッドおよびイベント駆動型の性質の本質です。

推奨学習: 「nodejs ビデオ チュートリアル

以上がNode.js はシングルスレッドですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。