Node.js のノンブロッキング I/O の詳細な分析

青灯夜游
リリース: 2021-11-03 19:19:10
転載
1801 人が閲覧しました

この記事では、Node.js のノンブロッキング I/O について説明します。お役に立てば幸いです。

Node.js のノンブロッキング I/O の詳細な分析

#NodeJ のノンブロッキング I/O を理解する方法

1. I/O: Input /output は、システムの入力と出力を指します

2. ノンブロッキングとブロッキングの主な違いは次のとおりです:入力を受信する間のプロセス結果を出力しています。引き続き他の入力を受信できますか? [推奨学習:「nodejs チュートリアル 」]

例:

例:外食に行く

外食には通常 2 つの方法があります:

1 食堂に行って食事する: 食べ物を買うために列に並ぶ

  • [行列] - [前の人を待ちます 誰かが料理します] - [自分で料理します] - [食べる]

2 レストランに食べに行きます

    ##[座る] - [食べ物を注文する] - [待つ] - [食べる]
  • 次の 2 つの食事方法:

    1 食堂での食事: 食事を提供する人へ 一般的に、前の人が食べ終わるまで待ってから次の人の食事を注文する必要があり、このプロセスがブロック モードです。
  • 2 レストランでの食事: レストランに食事をしに行くと、ウェイターが注文を完了します。食事の後は、次の人の注文のニーズに対応し続けます。食事の準備ができたら、食事が開始されます。ウェイターにとって、このプロセスはノンブロッキング プロセスです。


  • ノンブロッキング I/O の重要なポイントを理解する

1 I/O 操作を実行する

システム
    を決定します。例: 上記のクッキングの例では、I/O を実行するシステムサービススタッフです。
  • 2

    システムが I/O 操作を実行している間、他の I/O を実行できますか?
  • コードデモ

サンプルコードでは、主に条件に一致するファイルを検索するために使用されるライブラリ glob を導入しました。 詳細については、https://www.npmjs.com/package/glob

最初に、glob が提供する同期メソッドを使用してファイルを読み取ります

    const glob = require("glob");
    let result = null;
    result = glob.sync(__dirname + "/**/*");
    console.log(result);
ログイン後にコピー
結果は次のとおりです

ファイル配列

:

この同期操作の実行時間を見てみましょう:

    const glob = require("glob");

    let result = null;
    console.time("glob");
    result = glob.sync(__dirname + "/**/*");
    console.timeEnd("glob");
ログイン後にコピー
Node.js のノンブロッキング I/O の詳細な分析 結果:

ファイルの読み取り操作によりプロセスが 33 ミリ秒ブロックされますが、これは容認できません。

Node.js のノンブロッキング I/O の詳細な分析

次に、非同期メソッドを使用してファイルを読み取ります。

    let result2 = null;
    console.time("glob2");
    glob(__dirname + "/**/*", (err, res) => {
      console.log("glob over");
    });
    console.timeEnd("glob2");
ログイン後にコピー

結果:

非同期で実行します。ファイルの読み取りには合計 4 ミリ秒かかりましたが、ファイルを非同期で読み取りながら他の操作を実行することもできました。

Node.js のノンブロッキング I/O の詳細な分析

結論

勉強して、皆さんノンブロッキングI/Oについての理解が深まったと思いますので、また次回お会いしましょう。一生懸命勉強して、毎日成長してください!

プログラミング関連の知識について詳しくは、

プログラミング ビデオNode.js のノンブロッキング I/O の詳細な分析をご覧ください。 !

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

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