Les nœuds fonctionnent-ils tous avec un seul thread ?

WBOY
Libérer: 2022-06-15 16:57:45
original
2456 Les gens l'ont consulté

Le nœud s'exécute dans un seul thread, en utilisant un mode non bloquant asynchrone à un seul thread ; mais à proprement parler, il y a plusieurs threads dans le nœud. Le thread unique signifie qu'il n'y a qu'un seul moteur js dans le nœud exécuté sur le nœud principal. Le thread et d'autres opérations asynchrones sont également disponibles. Il existe des threads indépendants pour l'exécution et le nœud est monothread par défaut. Un "node.js" ne peut pas utiliser de ressources multicœurs.

Les nœuds fonctionnent-ils tous avec un seul thread ?

L'environnement d'exploitation de ce tutoriel : système windows10, nodejs version 12.19.0, ordinateur Dell G3.

Tous les nœuds s'exécutent-ils dans un seul thread ?

Le nœud s'exécute dans un seul thread, en utilisant le mode non bloquant asynchrone à un seul thread.

Quand il s'agit de nœud, nous pouvons immédiatement penser à des mots tels que monothread, IO asynchrone et piloté par les événements. La première chose à clarifier est de savoir si le nœud est vraiment monothread. S'il est monothread, alors où les E/S asynchrones et les événements planifiés (setTimeout, setInterval, etc.) sont-ils exécutés.

En fait, à proprement parler, le nœud n'est pas mono-thread. Il existe de nombreux types de threads dans le nœud, notamment :

thread d'exécution du moteur js

thread timer (setTimeout, setInterval)

thread http asynchrone (ajax)

Ce que nous appelons habituellement un seul thread signifie qu'il n'y en a qu'un seul dans le nœud js s'exécute sur le thread principal. D'autres threads d'E/S asynchrones et liés aux événements utilisent libuv pour implémenter des pools de threads internes et la planification des threads. Il existe une boucle d'événement dans libv, et le passage à travers la boucle d'événement peut obtenir un effet similaire au multithreading. En termes simples, Event Loop maintient une pile d'exécution et une file d'attente d'événements si des fonctions d'E/S et de minuterie asynchrones sont trouvées dans la pile d'exécution actuelle, ces fonctions de rappel asynchrones seront placées dans la file d'attente d'événements. Une fois l'exécution de la pile d'exécution actuelle terminée, les fonctions de rappel asynchrones de la file d'attente des événements sont exécutées dans un certain ordre à partir de la file d'attente des événements.

Les nœuds fonctionnent-ils tous avec un seul thread ?

Dans la figure ci-dessus, de la pile d'exécution à la file d'attente des événements, et enfin la fonction de rappel est exécutée dans un certain ordre dans la file d'attente des événements, l'ensemble du processus est une version simplifiée d'Event Loop. De plus, lorsque la fonction de rappel est exécutée, une pile d'exécution sera également générée. Des fonctions asynchrones peuvent être imbriquées dans la fonction de rappel, ce qui signifie que la pile d'exécution est imbriquée.

En d'autres termes, le thread unique dans le nœud signifie que le moteur js ne s'exécute que sur le seul thread principal. D'autres opérations asynchrones sont également exécutées par des threads indépendants. La commutation de contexte similaire au multithreading est implémentée via la boucle d'événement et le thread de libv. planification de la piscine. Les threads sont les plus petits processus, donc le nœud est également un processus unique. Cela explique pourquoi le nœud est monothread et monoprocessus.

Apprentissage recommandé : "Tutoriel vidéo Nodejs"

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal