Heim  >  Artikel  >  Web-Frontend  >  Eine eingehende Analyse der nicht blockierenden E/A in Node.js

Eine eingehende Analyse der nicht blockierenden E/A in Node.js

青灯夜游
青灯夜游nach vorne
2021-11-03 09:59:031807Durchsuche

Dieser Artikel führt Sie durch die nicht blockierende E/A in Node.js. Ich hoffe, er wird Ihnen helfen!

Eine eingehende Analyse der nicht blockierenden E/A in Node.js

Wie versteht man die nicht blockierende E/A von NodeJs? Der Hauptunterschied zwischen Nichtblockierung und Blockierung besteht darin: Im Prozess zwischen dem Empfangen von Eingaben und der Ausgabe von Ergebnissen, ob weiterhin andere Eingaben empfangen werden können

.

[Empfohlenes Lernen: „nodejs-Tutorial“]

Beispiel:Zum Beispiel: Essen gehen

Es gibt normalerweise zwei Möglichkeiten, essen zu gehen:1 Gehen Sie in die Kantine : Schlange stehen, um zu essen

[Warteschlange] – [Warten, bis die Person vorn Essen bekommt] – [Selbst Essen holen] – [Essen]

2 Zum Essen ins Restaurant gehen


    [ Hinsetzen] – [Bestellen] – [Warten] – [Essen]
  • Für diese beiden Arten des Essens:

    1 Essen in der Kantine: Wer Mahlzeiten serviert, muss auf die Person vor ihm warten um mit dem Essen fertig zu sein, bevor der nächsten Person das Essen serviert wird.
  • 2 Essen in einem Restaurant: Nachdem der Kellner Ihr Essen bestellt hat, kümmert er sich weiterhin um die Bestellanforderungen des nächsten Person. Wenn Ihr Essen fertig ist, wird er es Ihnen liefern. Für den Server ist dieser Prozess ein nicht blockierender Prozess

1 Bestimmen Sie ein System

für I/O-Vorgänge, zum Beispiel: oben Im Kochbeispiel ist das Servicepersonal das System, das I/O ausführt.
  • 2
  • Können andere E/A-Vorgänge ausgeführt werden, während das System E/A-Vorgänge ausführt? Diese Bibliothek wird hauptsächlich verwendet, um Dateien zu finden, die den Bedingungen entsprechen. Einzelheiten finden Sie unter https://www.npmjs.com/package/glob
  • us Werfen wir einen Blick auf die Ausführungszeit dieses Synchronisierungsvorgangs:

        const glob = require("glob");
        let result = null;
        result = glob.sync(__dirname + "/**/*");
        console.log(result);

    Ergebnis:

Ein Vorgang zum Lesen einer Datei blockiert den Prozess für 33 Millisekunden, was inakzeptabel ist! Als nächstes verwenden wir die asynchrone Methode, um die Datei zu lesen

        const glob = require("glob");
    
        let result = null;
        console.time("glob");
        result = glob.sync(__dirname + "/**/*");
        console.timeEnd("glob");
  • Das Ergebnis:

  • Es hat insgesamt 4 Millisekunden gedauert, die Datei asynchron zu lesen, und während des Prozesses des asynchronen Lesens der Datei können wir dies tun Führen Sie auch andere Vorgänge aus.
  • Fazit

  • Nach dem Studium glaube ich, dass jeder ein tieferes Verständnis für nicht blockierende E/A hat, also bis zum nächsten Mal. Lerne fleißig und mache jeden Tag Fortschritte!

Weitere Programmierkenntnisse finden Sie unter: Programmiervideo

! !

Das obige ist der detaillierte Inhalt vonEine eingehende Analyse der nicht blockierenden E/A in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen