


Node.js est-il vraiment monothread ? Comment communiquer entre les processus ?
Cet article vous présentera les processus et les threads, vous fera comprendre les threads dans Node.js, verra si le nœud est vraiment monothread, les modules child_process et cluster, et expliquera brièvement comment communiquer entre plusieurs threads.
Process
Dans le système d'exploitation, l'explication du processus : Un processus est un processus d'exécution dynamique d'un programme avec certaines fonctions indépendantes sur un ensemble de données. C'est le système d'exploitation qui alloue et planifie les ressources. . Une unité indépendante qui est le support sur lequel l'application s'exécute.
est un processus en cours d'exécution d'une application (concept dynamique)
-
est l'unité de base pour l'allocation du système et la planification des ressources (un processus est généralement composé de trois parties : programme, collecte de données et bloc de contrôle de processus)
Chaque Chaque processus a sa propre adresse d'espace indépendante et sa propre pile de données (les données ne sont pas partagées entre les processus et peuvent être communiquées via d'autres méthodes. Les processus ont généralement cinq états : état initial, état d'exécution, état d'attente, état prêt et). état de terminaison
Thread
Un thread est un processus de contrôle séquentiel unique dans l'exécution d'un programme. Il s'agit de la plus petite unité du flux d'exécution du programme et de l'unité de base de la planification et de la répartition du processeur. "La plus petite unité de planification et d'exécution des tâches" est la plus petite unité de ressources allouée par le système d'exploitation. Un processus unitaire se compose d'un ou plusieurs threads. Les threads sont différentes routes d'exécution de code dans un processus. Les processus sont indépendants les uns des autres, mais l'espace mémoire du programme est partagé entre les threads. dans le même processus. Le changement de contexte de thread est plus rapide que le changement de contexte de processus
- Le processus dans
- node node est monothread, c'est-à-dire qu'un processus n'ouvre qu'un seul nœud de thread. [Apprentissage recommandé : "
- Tutoriel Nodejs
"]
Est-ce vraiment mono-thread ?
Le nœud est monothread, mais sa couche sous-jacente est multithread. Dans la boucle d'événements, la bibliothèque libuv supprime les tâches de la file d'attente des événements et les affecte à différents threads pour traitement. Désormais, les conditions matérielles ne sont plus aussi arriérées qu'avant. Si un seul thread est utilisé pour le fonctionnement, les ressources seront gaspillées. Par conséquent, afin de réaliser un traitement multi-processus et de tirer pleinement parti des avantages des processeurs multicœurs, Node fournit le module child_process et le module cluster.
Le module child_process est utilisé pour démarrer plusieurs processus enfants, qui exécutent différentes commandes ou exécutent des fichiers de module node.js et des fichiers exécutables
Module cluster, module cluster, utilisé pour implémenter des applications Node.js Ouvrir plusieurs processus enfants dans chaque processus enfant et exécutez une copie de l'application Node.js pour le traitement
child_process module- child_process.spawn() : convient pour renvoyer de grandes quantités de données, telles que le traitement d'images, le traitement des données binaires .
- child_process.exec() : convient aux petites quantités de données. La valeur par défaut de maxBuffer est 200 * 1024. Le dépassement de cette valeur par défaut entraînera le crash du programme. Si la quantité de données est trop importante, le spawn peut être. utilisé.
- child_process.execFile() : similaire à child_process.exec(), la différence est qu'il ne peut pas être exécuté via le shell et ne prend pas en charge des comportements tels que la redirection d'E/S et la recherche de fichiers
child_process.fork () : Les nouveaux processus dérivés sont indépendants les uns des autres. Chaque processus a sa propre instance V8 et les ressources système sont limitées. Il n'est pas recommandé de générer trop de processus enfants. Il est généralement défini en fonction du nombre de processeurs système. noyaux.
- module cluster
- cluster.fork([env]) démarre le processus enfant et crée une instance de l'application Node.js dans le processus enfant
- Les attributs isMaster et isWorker sont utilisés pour déterminer s'il faut s'exécuter dans le processus principal ou dans un sous-processus ? La propriété Workers est utilisée pour obtenir les objets de travail exécutés dans tous les sous-processus. Pour développer, comment plusieurs threads communiquent-ils ?
- Communication inter-processus
Quatre types :
- Passage de messages (pipeline, FIFO, file d'attente de messages)
- Sémaphore (mutex, variable de condition, verrouillage en lecture-écriture)
- Partage de mémoire ( anonyme, nommé)
- Appel de procédure à distance
La communication inter-processus ne se rencontre pas seulement dans node, mais aussi dans d'autres langages. Bien sûr, c'est aussi une question incontournable lors de l'entretien. De nombreux contenus peuvent être discutés en profondeur !
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le service Node construit sur une base non bloquante et piloté par les événements présente l'avantage d'une faible consommation de mémoire et est très adapté à la gestion de requêtes réseau massives. Dans le contexte de demandes massives, les questions liées au « contrôle de la mémoire » doivent être prises en compte. 1. Le mécanisme de récupération de place du V8 et les limitations de mémoire Js sont contrôlés par la machine de récupération de place

Cet article vous donnera une compréhension approfondie de la mémoire et du garbage collector (GC) du moteur NodeJS V8. J'espère qu'il vous sera utile !

Le choix d'une image Docker pour Node peut sembler trivial, mais la taille et les vulnérabilités potentielles de l'image peuvent avoir un impact significatif sur votre processus CI/CD et votre sécurité. Alors, comment choisir la meilleure image Docker Node.js ?

Le module de fichiers est une encapsulation des opérations de fichiers sous-jacentes, telles que l'ajout de lecture/écriture/ouverture/fermeture/suppression de fichiers, etc. La plus grande caractéristique du module de fichiers est que toutes les méthodes fournissent deux versions de **synchrone** et ** asynchrone**, with Les méthodes avec le suffixe sync sont toutes des méthodes de synchronisation, et celles qui n'en ont pas sont toutes des méthodes hétérogènes.

Node 19 est officiellement publié. Cet article vous donnera une explication détaillée des 6 fonctionnalités majeures de Node.js 19. J'espère qu'il vous sera utile !

Comment Node.js fait-il le GC (garbage collection) ? L’article suivant vous guidera à travers cela.

La boucle d'événements est un élément fondamental de Node.js et permet une programmation asynchrone en garantissant que le thread principal n'est pas bloqué. Comprendre la boucle d'événements est crucial pour créer des applications efficaces. L'article suivant vous donnera une compréhension approfondie de la boucle d'événements dans Node. J'espère qu'il vous sera utile !

La raison pour laquelle le nœud ne peut pas utiliser la commande npm est que les variables d'environnement ne sont pas configurées correctement. La solution est la suivante : 1. Ouvrez "Propriétés système" ; 2. Recherchez "Variables d'environnement" -> "Variables système", puis modifiez l'environnement. variables ; 3. Recherchez l'emplacement du dossier nodejs ; 4. Cliquez sur "OK".
