Maison > interface Web > js tutoriel > Node.js est-il vraiment monothread ? Comment communiquer entre les processus ?

Node.js est-il vraiment monothread ? Comment communiquer entre les processus ?

青灯夜游
Libérer: 2021-08-02 18:44:08
avant
2490 Les gens l'ont consulté

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.

Node.js est-il vraiment monothread ? Comment communiquer entre les processus ?

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!

Étiquettes associées:
source:juejin.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