ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js のノンブロッキング I/O を詳しく見る

Node.js のノンブロッキング I/O を詳しく見る

青灯夜游
青灯夜游転載
2021-07-02 10:48:111739ブラウズ

Node.js のノンブロッキング I/O を詳しく見る

Node.js と言えば、おそらくたくさんのめまいのする用語を聞いたことがあるでしょう。

主に非同期についてイベント ループ と **ノンブロッキング I/O、**公式にはこの 2 つの点により、Node.js は高性能であると言えます。

したがって、Node.js の非同期メカニズムと使用法を理解することが非常に重要です

Node.js のノンブロッキング I/O とは何ですか

  • I/O は入力/出力、つまりシステムの入出力です
  • ブロッキング I/O とノンブロッキング I/O の違いは、システムにかかる時間にあります。入力を受信して​​から出力することはできますか? 他の入力の受信

#ライスのキューイングの例

Node.js のノンブロッキング I/O を詳しく見る

# の違いブロッキング I/O とノンブロッキング I/O システムが入力を受信して​​から出力するまでにかかる時間、および他の入力を受信できるかどうかによって異なります

    #顧客/注文スタッフ向け
  • # 食べ物を注文するために行列ができると I/O がブロックされます (後ろの顧客は、前の顧客が受け取るまで待たなければなりません)

      レストランでの料理の注文は I/O をブロックしません (レストランには多くのウェイターがいて、他のウェイターが料理を提供しながら注文するため、自分で注文することもできます)
    • 比較食堂のおばさんとウェイターをソフトウェア システムに接続します。
  • 食堂のおばさんは 1 人分しか提供できません。床で調理 -> I/O をブロックしています。

    ウェイターは、調理後に他のゲストにサービスを提供できます。注文 -> ノンブロッキング I/O
    • 入力 = 食べ物の注文
  • #出力 = 食べ物の提供

  • [推奨学習: 「

    nodejs チュートリアル
  • 」]

質問をして解決策を待つ例

たとえば: 開発者がフォーラムで質問を提起しました: 「この Node.js の問題を解決するにはどうすればよいですか? オンラインで待機しています。緊急です。」 . I/O をブロックしている状況は-> 彼は他の人がブロックするのを待ち続けています。答えて、他の人が答えると、彼は他のことをします。

ノンブロッキング I/O の状況は次のとおりです->彼は他のことをしに行き、しばらくしてから答えを確認するために戻ってきます

家事をする例

Xiaofang さんは家事をするために次のことをする必要があります:

洗濯機で服を洗う (20 分))

床を掃く ( 10 分)
  • 机の片付け (10 分)
  • 服を掛ける (10 分)
  • Xiaofang がこれらを完了できるように、賢くて合理的な順序を設計してください。最小限の時間で作業を完了します
A: 20 分

B: 25 分
  • C: 30 分 -- 洗濯機が衣類を洗濯しているときなので、Xiaofang は他のこともできます✅
  • D : 35 分
  • ノンブロッキング I/O

注意事項:

システムの確認、入力、出力

、それらは何ですか?

    I/O プロセス中に、他の I/O を実行できますか?
  • コードからブロッキング I/O を理解する
  • const glob = require("glob");
    
    var result = null;
    console.time("glob");
    // 获取目下的文件和文件名
    result = glob.sync(__dirname + "/**/*");
    console.timeEnd("glob");
    console.log(result);
次の結果を出力します

時間がかかることがわかります。

結果を取得するまでの待ち時間は 30 ミリ秒です

Node.js のノンブロッキング I/O を詳しく見る上記のコードから、

I/O のブロックには待ち時間があり、待ち時間はないと結論付けることができます。実行プロセス中に他のことも実行できます

コードからのノンブロッキング I/O の理解

const glob = require("glob");

var result = null;
console.time("glob");
// 获取目下的文件和文件名
glob(__dirname + "/**/*", function (err, res) {
  result = res;
  console.log("got result");
});
console.timeEnd("glob");

console.log(1 + 1);
次の結果を出力します

glob: 3.198ms
2
got result

上記のコードから、ノンブロッキング I/O により待ち時間が短縮されると結論付けることができます。実行プロセス中に他のことも実行できます。

プログラミング関連の知識の詳細については、こちらをご覧ください。をご覧ください:

プログラミング入門

! !

以上がNode.js のノンブロッキング I/O を詳しく見るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。