Maison  >  Article  >  interface Web  >  Principe de partage des ressources du processus parent et du processus enfant NodeJS et méthode de mise en œuvre

Principe de partage des ressources du processus parent et du processus enfant NodeJS et méthode de mise en œuvre

亚连
亚连original
2018-05-29 17:40:231631parcourir

Cet article présente principalement le principe et la méthode de mise en œuvre du partage de ressources entre le processus parent et le processus enfant NodeJS, et analyse les compétences opérationnelles associées de nodejs basées sur le module cluster pour réaliser le partage de ressources entre le processus parent et le processus enfant sous la forme de exemples. Les amis dans le besoin peuvent se référer à ce qui suit

Les exemples de cet article décrivent le principe et la méthode de mise en œuvre du partage de ressources entre le processus parent NodeJS et le processus enfant. Partagez-le avec tout le monde pour votre référence, comme suit :

Objectif expérimental : Réaliser le partage de ressources entre le processus parent et le processus enfant

Utiliser le module : cluster

Introduction : Établir un cluster de nœuds et implémenter le multi-processus, en utilisant child_process IPC résout l'utilisation multicœur et améliore les performances.

Principe :

1 Architecture multi-processus du mode maître-ouvrier maître-esclave

2 fork()Copier processus, Utiliser pleinement les ressources du processeur (déterminées par le nombre de cœurs)

3 Chaque processus a sa propre zone Si les opérations sont effectuées dans leurs zones respectives, les ressources ne sont pas partagées. En écoutant l'événement de message et en l'envoyant, la transmission du message est obtenue pour obtenir l'effet de partage de ressources

4 globalDataError est la mauvaise méthode de partage de ressources et globalDataSuccess est la bonne méthode de partage de ressources.

Code d'implémentation :

var cluster = require('cluster');
var cpus = require('os').cpus();
// 传递的事件名
var triggerEvent = {
    inc: 'inc',
    dec: 'dec'
}
// 错误的数据共享方式
var globalDataError = 0;
if (cluster.isMaster) {
  // 正确的数据共享方式
  var globalDataSuccess = 0;
  globalDataError++;
  // 启动多个进程,取决于内核数
  for (var i = 0; i < cpus.length; i++) {
    var worker = cluster.fork();
    worker.on(&#39;message&#39;, function(msg) {
      switch (msg) {
        case triggerEvent.inc:
          globalDataSuccess++;
          console.log(&#39;globalDataSuccess = &#39;, globalDataSuccess);
          break;
        case triggerEvent.dec:
          globalDataSuccess--;
          console.log(&#39;globalDataSuccess = &#39;, globalDataSuccess);
          break;
      }
    });
  }
  console.log(&#39;Master globalDataError = &#39;, globalDataError);
} else {
  globalDataError++;
  console.log(&#39;Worker globalDataError = &#39;, globalDataError);
  process.send(triggerEvent.dec);
  process.send(triggerEvent.inc);
}

Ce qui précède est ce que j'ai compilé pour vous. J'espère qu'il vous sera utile à l'avenir. .

Articles associés :

Solution au problème de clignotement du chargement de la page vue

Une brève discussion sur le problème de js pour obtenir le ModelAndView valeur

Le problème et la solution du scintillement de {{}} lors du rendu de la vue

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