Maison  >  Article  >  interface Web  >  Instance de processus amusante node.js

Instance de processus amusante node.js

小云云
小云云original
2018-03-17 16:39:121322parcourir


Cet article partage principalement avec vous des exemples de processus de lecture node.js. node fournit le module child_process. Nous enregistrons ensuite l'exemple de code classique en tant que fichier worker.js, comme suit :

let http=require('http');
http.createServer(function (req,res) {
    res.writeHead(200,{'Content-Type':"text/plain"});
    res.end('hello world')
}).listen(Math.round((1+Math.random())*1000),'127.0.0.1');
Enregistrez le code suivant sous master.js et démarrez-le via le nœud master.js :

let fork=require('child_process').fork;
let cpus=require(&#39;os&#39;).cpus();for(let i=0;i<cpus.length;i++){    fork(&#39;./work.js&#39;);
}
Affichez le nombre de processus via ps aux|grep worker.js sous les systèmes *nix .

Il s'agit du mode maître-ouvrier, également connu sous le nom de mode maître-esclave.

Les processus copiés par fork sont indépendants. Ce processus a une toute nouvelle instance V8 indépendante. Les processus de fork sont coûteux. Instance de processus amusante node.js

9.2.1 Créer un sous-processus

Le sous-processus dans la nouvelle version du nœud a également un sous-processus synchrone et un sous-processus asynchrone. Il s'agit du sous-processus asynchrone. -processus - spawn() : démarre un processus enfant
- exec() : Démarre un processus enfant. La différence avec spawn est qu'il a une fonction de rappel
. - execFile() : Démarre un processus enfant pour exécuter un fichier exécutable
- fork() : Semblable à spawn, la différence est qu'il suffit de spécifier le fichier js pour créer un sous-processus de nœud

La différence entre spawn et exec et execFile est que l'attribut timeout peut être spécifié lorsque les deux derniers sont créés pour définir le délai d'attente, le processus enfant peut être tué une fois le délai écoulé.

La différence entre exec et execFile est que exec convient à l'exécution de commandes existantes et execFile convient à l'exécution de fichiers.

let cp=require(&#39;child_process&#39;);
cp.spawn(&#39;node&#39;,[&#39;worker.js&#39;]);//没有回调函数cp.exec(&#39;node worker.js&#39;,function (err,stdout,stderr) {});
cp.execFile(&#39;worker.js&#39;,function (err,stdout,stderr) {});
cp.fork(&#39;./worker.js&#39;);
9.2.2 Communication inter-processus

parent.js:

let cp=require(&#39;child_process&#39;);let n=cp.fork(__dirname+ &#39;./worker.js&#39;);
n.on(&#39;message&#39;,function (m) {});
n.send({hello:&#39;world&#39;});
Recommandations associées :

PHP inter- communication de processus Explication détaillée

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