Première partie: I / O
1. bloquant I / O pour les concepts d'E / S non bloquant
1,1 blocage d'E / S (Synchronous E / S)
Si vous rencontrez un fil dans la mise en uvre de l'accès au disque ou les communications réseau (** désignés collectivement comme les opérations d'E / S **), prend généralement beaucoup de temps, le système d'exploitation sera privé du droit de contrôler le thread CPU, suspendu exécution, tandis que d'autres ressources donnent les threads de travail, cette planification de fil est appelé opération obstructive ** ** ** quand E / S ** est terminée, le système d'exploitation permet de bloquer ce fil ascenseur, restaurer son CPU le contrôle, afin qu'il continue à fonctionner. Cette I / O est en mode I synchrone normale ** / O (Synchronous I / O) ou le blocage d'E / S (Blocage I / O).
1.2 non bloquante E / S (entrées / sorties asynchrones)
E / S non-blocage est pour toutes les opérations d'E / S sans utiliser des tactiques de blocage ** ** Quand une rencontre de fil d'E / S, ** ** ne bloque pas attendre pour terminer, mais l'opération E / S est envoyé au système d'exploitation, passez à l'instruction suivante ** **, et d'autres systèmes d'exploitation pour terminer l'opération d'E / S à l'avenir, il enverra une notification ** effectue de fil des opérations d'E / S, le fil seront traitées à un moment spécifique sous la forme d'événements ** cet événement, qui est, le fil ne sera pas arrêter d'écouter le cycle de temps pour voir s'il y a des événements en cours, et donc le traitement.
Par exemple populaire:
(https://www.zhihu.com/question/19732473/answer/20851256)
`` `
Vous avez demandé à appeler le propriétaire de la librairie il n'y a pas de « systèmes distribués » Ce livre, si elle est `` mécanisme de communication synchrone, le propriétaire de la librairie dirais, vous attendez, « Je vais vérifier, »
Puis a commencé à vérifier vérifier ah, chèque et autre bon (probablement cinq secondes, il pourrait un jour) vous dire le résultat (résultat de retour).
`` Le mécanisme de communication asynchrone, le propriétaire de la librairie pour vous dire que je vérifie ah, bien appeler votre chèque, puis directement à raccrocher (ne retourne pas de résultat).
Ensuite, vérifiez bien, il prendra l'initiative de vous appeler. Ici, le rappel de patron à travers le de cette façon « retour d'appel ».
`` `
2. blocage d'E / S et I non bloquante / O Caractéristiques
Asynchronous programmation d'une seconde partie (programmation fonctionnelle)
Asynchronous I / O, il est lié à la programmation asynchrone.
syntaxe de programmation d'abord, synchrone lit un fichier:
* Créer readfilesync.js et exécution *
`` `
var fs = nécessitent ( 'fs');
données var = fs.readFileSync ( '/ Users / 51testing / Desktop / file.txt', 'utf-8');
console.log (données);
console.log ( 'fin.');
`` `
Imprimer les résultats sont les suivants:
`` `
// Effectuer
$ Noeud /Users/51testing/Desktop/readfilesync.js
tu vas bien
fin.
$
`` `
Le code ci-dessus est facile à comprendre, la mise en uvre de haut vers le bas, la pratique de la programmation asynchrone?
* Créer readfileasync.js et exécution *
`` `
var fs = nécessitent ( 'fs');
fs.readFile ( '/ Users / 51testing / Desktop / file.txt', 'utf-8', la fonction (err, data) {
si (err) {
console.error (err);
} Else {
console.log (données);
}
});
console.log ( 'fin.');
`` `
Imprimer les résultats sont les suivants:
`` `
// Effectuer
$ Noeud /Users/51testing/Desktop/readfileasync.js
fin.
tu vas bien
$
`` `
Le travail effectué en appelant juste au moment où fs.readFile `L'E / S asynchrone des requêtes au fonctionnement d'installation privée ensuite, ` Retour immédiatement `Et exécutez l'instruction suivante, après l'exécution de l'entrée événements moniteur de boucle d'événements .
Lorsque fs événement a reçu une demande d'E / S est terminée, la boucle d'événement ` appel actif `Fonction de rappel pour compléter le suivi. `Nous allons d'abord voir la fin. Ensuite, voir le contenu du fichier file.txt. `
La troisième partie du mécanisme du cycle Node.js
> Node.js à quel moment ils entreront dans la boucle d'événement?
** cycle de vie: ** programme `Node.js par le début de l'anneau de boucle d'événements, à la fin de la boucle d'événements.
Toute la logique est fonction de rappel d'événement, il faut donc toujours boucle d'événements Node.js, la fonction de rappel d'entrée de programme est le premier événement de la boucle d'événements. événement de rappel lors de l'exécution, il peut émettre des requêtes d'E / S ou d'un événement de transmission directe (EMIT), l'exécution retourne après la fin de la boucle d'événements, les contrôles de boucle d'événement de l'événement, il y aura pas de processus de circulation jusqu'à ce que la fin du programme, .
Plus de contenu passionnant s'il vous plaît attention à "IT Alliance de combat" Oh ~ ~ ~