ホームページ > ウェブフロントエンド > jsチュートリアル > Node.js で真にノンブロッキング コードを実現するにはどうすればよいですか?

Node.js で真にノンブロッキング コードを実現するにはどうすればよいですか?

DDD
リリース: 2024-12-11 12:18:19
オリジナル
423 人が閲覧しました

How Can I Achieve Truly Non-Blocking Code in Node.js?

Node.js でノンブロッキング コードを実現する正しい方法

非同期プログラミングでは、ノンブロッキング関数により他のコードを同時に実行できます。完成を待たずに。ただし、以下の例のように、コードを Promise でラップするだけでは、真のノンブロッキングにはなりません。

function longRunningFunc(val, mod) {
    return new Promise((resolve, reject) => {
        sum = 0;
        for (var i = 0; i < 100000; i++) {
            for (var j = 0; j < val; j++) {
                sum += i + j % mod
            }
        }
        resolve(sum)
    })
}
ログイン後にコピー

コードを Promise でラップしているにもかかわらず、プログラムは印刷する前に待機します。コードがブロックされています。

非ブロッキング コードを理解する

Node.js、プレーンな JavaScript コードは本質的にブロックされており、単一スレッドで実行されます。 Promise や非同期 API でいくらラップしても、ノンブロッキングにすることはできません。ノンブロッキング動作を実現するには、コードの実行を外部スレッドにシフトする手法を利用するか、実験的な Node.js API をスレッドに採用する必要があります。

ノンブロッキング コードの実現

本物のノンブロッキング コードを作成する方法をいくつか紹介します。 Node.js:

  • 子プロセス: 別の子プロセスでコードを実行し、結果に非同期でアクセスします。
  • ワーカー スレッド (Node.js v11) ): 実験的なワーカー スレッド機能を利用して、メインと並行して別個のワーカー スレッドを作成します。 thread.
  • ネイティブ コード アドオン: Node.js のアドオン メカニズムを使用してネイティブ コード拡張機能を作成し、libuv スレッドまたはオペレーティング システム レベルのスレッドを使用します。
  • 非同期 API: メインでのコードの実行を延長せずに、既存の非同期 API をベースに構築します。 thread.

ノンブロッキング技術を実装することで、Node.js アプリケーションは他のコードの実行を妨げることなく、長時間実行される操作を効果的に処理でき、その結果、応答性と同時実行性が向上します。

以上がNode.js で真にノンブロッキング コードを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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