Home  >  Article  >  Web Front-end  >  Detailed explanation of resource sharing steps between NodeJS parent process and child process

Detailed explanation of resource sharing steps between NodeJS parent process and child process

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

This time I will bring you a detailed explanation of the resource sharing steps between the NodeJS parent process and the child process. What are the precautions for resource sharing between the NodeJS parent process and the child process? The following is a practical case, let's take a look.

Experimental goal: Realize resource sharing between parent process and child process

Using module: cluster

IntroductionEstablish a node cluster to implement multi-process, use child_process to implement IPC and solve multi-core Utilization, improve performance.

Principle:

1 Multi-process architecture of Master-worker master-slave mode

2

fork() Copy the process to make full use of CPU resources (determined by the number of cores)

3 Each process has its own area. If operations are performed in their respective areas, the resources are not shared. By listening to the message

event and send, message delivery is achieved to achieve the effect of resource sharing

4 globalDataError is the wrong resource sharing method, and globalDataSuccess is the correct resource sharing method.

Implementation code:

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);
}
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website !

Recommended reading:

axios sends a post request and submits the image form with a detailed explanation of the steps

axios post method submits the formdata with a detailed explanation

The above is the detailed content of Detailed explanation of resource sharing steps between NodeJS parent process and child process. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn