Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Schritte zur Ressourcenfreigabe zwischen dem übergeordneten NodeJS-Prozess und dem untergeordneten Prozess

Detaillierte Erläuterung der Schritte zur Ressourcenfreigabe zwischen dem übergeordneten NodeJS-Prozess und dem untergeordneten Prozess

php中世界最好的语言
php中世界最好的语言Original
2018-05-11 10:07:421661Durchsuche

Dieses Mal werde ich Ihnen eine detaillierte Erläuterung der Schritte zur Ressourcenfreigabe zwischen dem NodeJS-Elternprozess und dem untergeordneten Prozess geben. Was sind die Vorsichtsmaßnahmen für die Ressourcenfreigabe zwischen dem NodeJS-Elternprozess und dem untergeordneten Prozess? Das Folgende ist ein praktischer Fall, werfen wir einen Blick darauf.

Experimentelles Ziel: Ressourcenteilung zwischen übergeordnetem und untergeordnetem Prozess realisieren

Modul verwenden: Cluster

Einführung: Erstellen Sie einen Knotencluster, um mehrere Prozesse zu implementieren, verwenden Sie child_process, um IPC zu implementieren und Lösen Sie die Multi-Core-Auslastung und verbessern Sie die Leistung.

Prinzip:

1 Multiprozessarchitektur des Master-Worker-Master-Slave-Modus

2 fork()Kopieren Prozess, CPU-Ressourcen voll ausnutzen (bestimmt durch die Anzahl der Kerne)

3 Jeder Prozess hat seinen eigenen Bereich. Wenn Operationen in ihren jeweiligen Bereichen ausgeführt werden, werden Ressourcen nicht gemeinsam genutzt. Durch Abhören der NachrichtEreignis und Senden wird die Nachrichtenzustellung erreicht, um den Effekt der Ressourcenfreigabe zu erzielen

4 globalDataError ist die falsche Methode zur Ressourcenfreigabe und globalDataSuccess ist die richtige Methode zur Ressourcenfreigabe.

Implementierungscode:

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('message', function(msg) {
      switch (msg) {
        case triggerEvent.inc:
          globalDataSuccess++;
          console.log('globalDataSuccess = ', globalDataSuccess);
          break;
        case triggerEvent.dec:
          globalDataSuccess--;
          console.log('globalDataSuccess = ', globalDataSuccess);
          break;
      }
    });
  }
  console.log('Master globalDataError = ', globalDataError);
} else {
  globalDataError++;
  console.log('Worker globalDataError = ', globalDataError);
  process.send(triggerEvent.dec);
  process.send(triggerEvent.inc);
}

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Für weitere spannende Informationen zahlen Sie bitte Beachten Sie auch andere verwandte Artikel auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Axios sendet Post-Anfrage und übermittelt das Bildformular im Detail

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zur Ressourcenfreigabe zwischen dem übergeordneten NodeJS-Prozess und dem untergeordneten Prozess. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn