Table des matières
Le nœud peut-il activer le multi-thread ?
Utilisez multi-processus
express
extensionServer.js Utilisez express pour créer des sous-services
serve.js Créez d'abord le service multithread Express
cluster.js Changez le service Express en cluster
Changez le service Express par défaut http Le service
Maison interface Web Questions et réponses frontales Le nœud peut-il activer le multithread ?

Le nœud peut-il activer le multithread ?

Jun 15, 2022 pm 05:06 PM
node

Node peut activer le multithreading ; vous pouvez utiliser le module "child_process" fourni avec le nœud pour activer le multithreading. La syntaxe est "child_process.fork(modulePath[, args][, options])" ; pour créer exec et execFile Il existe quatre types de processus enfants : , spawn et fork.

Le nœud peut-il activer le multithread ?

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

Le nœud peut-il activer le multi-thread ?

Le nœud peut-il activer le multi-thread ?

Nous savons tous que Node.js fonctionne en mode monothread, mais il utilise la gestion des événements pour gérer la concurrence. piloté par les événements, non- Le modèle d'E/S bloquant utilise pleinement les E/S asynchrones fournies par le système d'exploitation pour effectuer des tâches multitâches et convient aux scénarios d'application à forte intensité d'E/S. le programme n'a pas besoin de bloquer et d'attendre que le résultat soit renvoyé

L'émergence du multi-thread NodeJS n'est pas dans le but d'améliorer la concurrence, mais d'améliorer pleinement l'utilisation du processeur

Plusieurs façons d'ouvrir le multi-threads

Utilisez le module child_process fourni avec Node

child_process.fork(modulePath[, args][, options])
Copier après la connexion

Dérivez un nouveau processus Node.js et utilisez le canal de communication IPC établi (il autorise l'envoi de messages entre les processus parent et enfant) Appelez le module spécifié

cluster Le module cluster peut facilement créez des processus enfants qui partagent le port du serveur. Le processus de travail est généré à l'aide de la méthode child_process.fork()

Le nœud peut-il activer le multithread ?

Utilisez multi-processus

express

Créez trois nouveaux fichiers server.js (service express) cluster.js. (fichier de service multithread) extensionServer.js (sous-service express)
Les opérations suivantes garantissent qu'express est installé

npm intsall express --seve-dev

extensionServer.js Utilisez express pour créer des sous-services

const express = require("express"), //Express框架
app = express();

// api 先关接口
app.all('/userinfo', (req, res) => {
  res.json({ name: '自夏', msg: '我在自夏 selfsummer' })
})

app.listen(4000, () => {
 console.log(`子服务启动成功`);
})
Copier après la connexion

serve.js Créez d'abord le service multithread Express

const  { fork } = require("child_process"),
express = require("express"), //Express框架
app = express();

const { pid, ppid } = require('process')

// api 先关接口
app.all('/123', (req, res, next) => {
   console.log(`本次进程id为: ${pid}`);
  res.end(`本次进程id为: ${pid}`)
})

app.all('/456', (req, res, next) => {
  console.log(`本次进程id为: ${pid}`);
  res.end(`本次进程id为: ${pid}`)
})


app.listen(3888, () => {
 console.log(`服务器端启动成功 父进程 ${ppid} 当前服务进程id为 ${pid}`);
 // 开启多进程
 fork('extensionServer.js')
})

module.exports = {
  app,
  express,
};
Copier après la connexion

Démarrez le service À ce moment, le service principal et le libre-service sont démarrés

Le nœud peut-il activer le multithread ?

Accédez au service principal Express et aux adresses des sous-services. réussir

cluster.js Changez le service Express en cluster

Utilisez le module de cluster de cluster pour activer le multi-threading

const os = require('os');
const cluster = require('cluster');
const { log } = console;
const express = require("express"); //Express框架

const app = express();
const processId = process.pid;

// 判断当前是否有主进程
if (cluster.isMaster)
{
	// 获取当前本机cpu核数,开启多线程
  const cpus = os.cpus().length;
  for (let i = 0; i < cpus; i++){
    cluster.fork()
  }
	//进程已断开连接	
	  cluster.on(&#39;disconnect&#39;, (worker) => {
	    console.log(`进程号 #${worker.id} 已断开`);
	  });
	// 意外退出进程
	cluster.on(&#39;exit&#39;, (worker, code, signal) => {
	      cluster.fork();
  	});


} else
{
	// 引用Express主服务 开启主进程  
  require(&#39;./server&#39;)
}
Copier après la connexion

Démarrez le cluster de nœuds de service de cluster

Bien sûr, vous pouvez également continuer à ouvrir des processus enfants dans le cluster

Visitez deux fois (un accès au navigateur, un accès au facteur) l'interface arrière
Le nœud peut-il activer le multithread ?

Pourquoi y en a-t-il plusieurs Le serveur a démarré avec succès est xxx

Il devrait s'agir d'un module de cluster. -process est généré sous le processus principal actuel, et chaque sous-processus est Le processus est un nouveau processus dérivé de tous les
du processus principal. Les processus sont indépendants les uns des autres. Chaque processus a sa propre instance V8 et sa propre mémoire. Les ressources du système sont limitées. Il n'est pas recommandé de générer trop de processus enfants. Cela dépend des paramètres du système *
Numéro de cœur du processeur*

Nous avons déjà jugé s'il existe un processus principal

S'il existe un processus principal, utilisez le module cluster pour ouvrir le processus enfant

Sinon, démarrez le processus

Changez le service Express par défaut http Le service

n'a besoin que de modifier le contenu du fichier server.js

const http = require(&#39;http&#39;)const { pid, ppid } = require(&#39;process&#39;)const server = http.createServer((req, res) => {
  res.end(router(req.url))})const router = (url) => {
  switch (url)
  {
    case &#39;/132&#39;:
      return `进程${pid} 很高兴为你服务`;
    case &#39;/456&#39;:
      return `进程${pid} 很高兴为你服务`;
    default: return `没有此接口`
  }}server.listen(3889, () => {
  console.log(`Server Started in process ${pid}`);})
Copier après la connexion

Démarrez toujours cluster.js ( fichier de service multithread)
Le nœud peut-il activer le multithread ?

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment supprimer un nœud dans NVM Comment supprimer un nœud dans NVM Dec 29, 2022 am 10:07 AM

Comment supprimer un nœud avec nvm : 1. Téléchargez « nvm-setup.zip » et installez-le sur le lecteur C ; 2. Configurez les variables d'environnement et vérifiez le numéro de version via la commande « nvm -v » 3. Utilisez la commande « nvm » ; install" commande Installer le nœud ; 4. Supprimez le nœud installé via la commande "nvm uninstall".

Comment utiliser Express pour gérer le téléchargement de fichiers dans un projet de nœud Comment utiliser Express pour gérer le téléchargement de fichiers dans un projet de nœud Mar 28, 2023 pm 07:28 PM

Comment gérer le téléchargement de fichiers ? L'article suivant vous expliquera comment utiliser Express pour gérer les téléchargements de fichiers dans le projet de nœud. J'espère qu'il vous sera utile !

Comment faire la mise en miroir Docker du service Node ? Explication détaillée de l'optimisation extrême Comment faire la mise en miroir Docker du service Node ? Explication détaillée de l'optimisation extrême Oct 19, 2022 pm 07:38 PM

Durant cette période, je développais un service HTML dynamique commun à toutes les catégories de documents Tencent. Afin de faciliter la génération et le déploiement des accès aux différentes catégories, et pour suivre la tendance de migration vers le cloud, j'ai envisagé d'utiliser Docker pour corriger. contenu du service et gérer les versions des produits de manière unifiée. Cet article partagera l'expérience d'optimisation que j'ai accumulée en train de servir Docker pour votre référence.

Une analyse approfondie de l'outil de gestion de processus de Node « pm2 » Une analyse approfondie de l'outil de gestion de processus de Node « pm2 » Apr 03, 2023 pm 06:02 PM

Cet article partagera avec vous l'outil de gestion de processus de Node "pm2" et expliquera pourquoi pm2 est nécessaire, comment installer et utiliser pm2, j'espère qu'il sera utile à tout le monde !

Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Mar 05, 2025 pm 05:57 PM

Explication détaillée et guide d'installation pour les nœuds de pignon Cet article introduira l'écosystème de pignon en détail - nœuds PI, un rôle clé dans l'écosystème de pignon et fournir des étapes complètes pour l'installation et la configuration. Après le lancement du réseau de test de la blockchain pèse, les nœuds PI sont devenus une partie importante de nombreux pionniers participant activement aux tests, se préparant à la prochaine version du réseau principal. Si vous ne connaissez pas encore Pinetwork, veuillez vous référer à ce qu'est Picoin? Quel est le prix de l'inscription? PI Utilisation, exploitation minière et sécurité. Qu'est-ce que Pinetwork? Le projet Pinetwork a commencé en 2019 et possède sa pièce exclusive de crypto-monnaie PI. Le projet vise à en créer un que tout le monde peut participer

Parlons de la façon d'utiliser pkg pour empaqueter des projets Node.js dans des fichiers exécutables. Parlons de la façon d'utiliser pkg pour empaqueter des projets Node.js dans des fichiers exécutables. Dec 02, 2022 pm 09:06 PM

Comment empaqueter le fichier exécutable nodejs avec pkg ? L'article suivant vous expliquera comment utiliser pkg pour empaqueter un projet Node dans un fichier exécutable. J'espère qu'il vous sera utile !

Que faire si le nœud npm gyp échoue Que faire si le nœud npm gyp échoue Dec 29, 2022 pm 02:42 PM

npm node gyp a échoué car les versions de « node-gyp.js » et « Node.js » ne correspondaient pas. La solution : 1. Videz le cache du nœud via « npm cache clean -f » 2. Via « npm install - ». g n" Installez le module n ; 3. Installez la version "node v12.21.0" via la commande "n v12.21.0".

Qu'est-ce qu'un système d'authentification unique ? Comment l'implémenter en utilisant nodejs ? Qu'est-ce qu'un système d'authentification unique ? Comment l'implémenter en utilisant nodejs ? Feb 24, 2023 pm 07:33 PM

Qu'est-ce qu'un système d'authentification unique ? Comment l'implémenter en utilisant nodejs ? L'article suivant vous présentera comment utiliser Node pour implémenter un système d'authentification unique. J'espère qu'il vous sera utile !

See all articles