Maison  >  Article  >  interface Web  >  Un examen plus approfondi des E/S non bloquantes dans Node.js

Un examen plus approfondi des E/S non bloquantes dans Node.js

青灯夜游
青灯夜游avant
2021-07-02 10:48:111739parcourir

Un examen plus approfondi des E/S non bloquantes dans Node.js

En parlant de Node.js, vous avez probablement entendu un tas de noms propres vertigineux

À propos de l'asynchrone, principalement de la boucle d'événements et des **E/S non bloquantes, **officiellement parce que ces deux points font Node.js haute performance.

Il est donc très important de comprendre le mécanisme asynchrone et l'utilisation de Node.js

Quelle est l'E/S non bloquante de Node.js

  • L'E/S est une entrée/sortie, un système d'entrée et sortie
  • La différence entre les E/S bloquantes et les E/S non bloquantes réside dans le temps nécessaire au système pour recevoir les entrées puis les sorties, et s'il peut recevoir d'autres entrées

Exemple de file d'attente pour les repas

Un examen plus approfondi des E/S non bloquantes dans Node.js

E/S bloquantes La différence entre et les E/S non bloquantes réside dans le temps nécessaire au système pour recevoir une entrée puis une sortie, et s'il peut recevoir d'autres entrées

  • Pour clients/personnel de commande

    • faire la queue pour commander de la nourriture bloque les E/S (les clients à l'arrière doivent attendre que les clients devant la reçoivent avant de pouvoir la recevoir)
    • La commande du restaurant n'est pas bloquante I/ O (parce que le restaurant a beaucoup de serveurs, pendant que d'autres commandent, ils peuvent aussi commander eux-mêmes)
  • Comparez la tante de la cafétéria et le serveur à un système logiciel

    • La tante de la cafétéria ne peut préparer les repas qu'un par un -> ; E/S bloquantes
    • Le serveur peut servir d'autres invités après avoir commandé -> E/S non bloquantes
  • Entrée = commander de la nourriture

  • Sortie = servir de la nourriture

[Apprentissage recommandé : " Tutoriel Nodejs"]

Exemples de questions en attente de résolution

Par exemple : Un développeur dans le forum Une question a été soulevée sur : "Comment résoudre ce problème Node.js En attente en ligne, urgent" .

La situation de blocage des E/S est-> Il continue d'attendre que d'autres personnes répondent, et lorsque d'autres personnes répondent, il recommencera D'autres choses.

La situation d'E/S non bloquantes est-> Il va faire autre chose et revient pour voir la réponse après un certain temps

Exemple de travaux ménagers

Xiaofang doit faire les choses suivantes à faire tâches ménagères :

  • Laver les vêtements dans la machine à laver (20 minutes))
  • Balayage du sol (10 minutes)
  • Ranger le bureau (10 minutes)
  • Suspendre les vêtements (10 minutes)

Veuillez concevoir un et une séquence raisonnable pour minimiser le nombre de fleurs. Il est temps de terminer ces choses

  • A : 20 minutes
  • B : 25 minutes
  • C : 30 minutes - parce que lorsque la machine à laver lave les vêtements, Xiaofang peut faire autre chose✅
  • D : 35 minutes

E/S non bloquantes comprises

Remarques :

  • Déterminerle système, l'entrée, la sortie, qu'est-ce que c'est ?
  • Dans le processus d'E/S, d'autres I peuvent-ils /O être effectué

Comprendre le blocage à partir du code I/O

const glob = require("glob");

var result = null;
console.time("glob");
// 获取目下的文件和文件名
result = glob.sync(__dirname + "/**/*");
console.timeEnd("glob");
console.log(result);

imprime les résultats suivants

Un examen plus approfondi des E/S non bloquantes dans Node.js

On peut voir qu'il faut 30 毫秒的等待时间 pour obtenir le résultat

À partir du code ci-dessus, il peut être conclu que

le blocage des E/S a un temps d'attente. Aucune autre chose ne peut être effectuée pendant l'exécution

Comprendre les E/S non bloquantes à partir du code

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);

Imprimer les résultats suivants

glob: 3.198ms
2
got result

De du code ci-dessus, on peut conclure que les E/S non bloquantes réduisent le temps d'attente, vous pouvez également effectuer d'autres choses pendant le processus d'exécution

Pour plus de connaissances sur la programmation, veuillez visiter :

Introduction à la programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer