Apropos Node.js, Sie haben wahrscheinlich eine Menge schwindelerregender Eigennamen gehört
Über asynchrone, hauptsächlich Ereignisschleife und **nicht blockierende E/A, **offiziell, weil diese beiden Punkte ausmachen Node.js hohe Leistung.
Deshalb ist es wichtig, den asynchronen Mechanismus und die Verwendung von Node.js zu verstehen.
Was ist die nicht blockierende E/A von Node.js? Ausgabe
Der Unterschied zwischen blockierender E/A und nicht blockierender E/A liegt in der Zeit, die das System benötigt, um Eingaben und dann Ausgaben zu empfangen, und ob es andere Eingaben empfangen kann
-
- Beispiel für die Warteschlange für Mahlzeiten
Blockierende E/A Der Unterschied zwischen
und nicht blockierenden E/A liegt in der Zeit, die das System benötigt, um Eingaben und dann Ausgaben zu empfangen, und ob es andere Eingaben empfangen kann
Für Kunden /Bestellpersonal
- Das Anstehen, um Essen zu bestellen, blockiert die E/A (die Kunden hinten müssen warten, bis die Kunden vorne das Essen erhalten, bevor sie es erhalten können)Die Restaurantbestellung blockiert die E/A nicht (Da das Restaurant viele Kellner hat, können andere, während andere bestellen, auch selbst bestellen)
-
-
Vergleichen Sie die Cafeteria-Tante und den Kellner mit einem Softwaresystem
- Die Cafeteria-Tante kann Mahlzeiten nur einzeln zubereiten -> I/O blockierenDer Kellner kann nach der Bestellung andere Gäste bedienen -> nodejs-Tutorial
"]-
- Beispiele für Fragen, die darauf warten, gelöst zu werden
Zum Beispiel: Ein Entwickler im Forum Es wurde eine Frage gestellt zu: „Wie kann ich dieses Node.js-Problem lösen, ich warte dringend?“ . Die Situation beim Blockieren von E/A ist-> Er wartet ständig darauf, dass andere Leute antworten, und wenn andere Leute antworten, wird er es erneut tun. Andere Dinge.
Die Situation der nicht blockierenden E/A ist-> Er geht anderen Dingen nach und kommt nach einer Weile zurück, um die Antwort zu sehen-
Beispiel für Hausarbeit
Xiaofang muss die folgenden Dinge tun Hausarbeit:
Wäsche in der Waschmaschine waschen (20 Minuten)
Boden fegen (10 Minuten)
Schreibtisch aufräumen (10 Minuten)
Kleidung aufhängen (10 Minuten)
Bitte entwerfen Sie eine clevere und angemessene Reihenfolge, um die Anzahl der Blumen zu minimieren. Zeit, um diese Dinge zu erledigen. A: 20 Minuten
D: 35 Minuten /O ausgeführt werden
Verstehen Sie die Blockierung aus dem Code-E/A
const glob = require("glob");
var result = null;
console.time("glob");
// 获取目下的文件和文件名
result = glob.sync(__dirname + "/**/*");
console.timeEnd("glob");
console.log(result);
druckt die folgenden Ergebnisse aus
Es ist ersichtlich, dass erforderlich ist, um das Ergebnis zu erhalten
Aus dem obigen Code ist es Daraus kann geschlossen werden, dass
blockierende E/A eine Wartezeit hat. Während der Ausführung können keine anderen Dinge ausgeführt werden. -
- Verstehen Sie nicht blockierende E/A aus dem Code Aus dem obigen Code kann geschlossen werden, dass nicht blockierende E/A die Wartezeit verkürzt und Sie während des Ausführungsprozesses auch andere Dinge ausführen können. !
-
Das obige ist der detaillierte Inhalt vonEin genauerer Blick auf nicht blockierende E/A in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!