Le nœud peut-il activer le multithread ?
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.
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])
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()
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(`子服务启动成功`); })
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, };
Démarrez le service À ce moment, le service principal et le libre-service sont démarrés
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('disconnect', (worker) => { console.log(`进程号 #${worker.id} 已断开`); }); // 意外退出进程 cluster.on('exit', (worker, code, signal) => { cluster.fork(); }); } else { // 引用Express主服务 开启主进程 require('./server') }
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
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('http')const { pid, ppid } = require('process')const server = http.createServer((req, res) => { res.end(router(req.url))})const router = (url) => { switch (url) { case '/132': return `进程${pid} 很高兴为你服务`; case '/456': return `进程${pid} 很高兴为你服务`; default: return `没有此接口` }}server.listen(3889, () => { console.log(`Server Started in process ${pid}`);})
Démarrez toujours cluster.js ( fichier de service 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!

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)

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 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 !

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.

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 !

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

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 !

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 ? 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 !
