梗概

  • 使用的[base::IPC]方式为:管道

示例

使用 child_process 模块

// parent.js
const { fork } = require('child_process');
const child = fork('child.js');
 
child.on('message', (msg) => {
  console.log('Message from child:', msg);
});
 
child.send({ hello: 'world' });
// child.js
process.on('message', (msg) => {
  console.log('Message from parent:', msg);
});
 
process.send({ foo: 'bar' });

使用 cluster 模块

// master.js
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
 
if (cluster.isMaster) {
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
 
  Object.values(cluster.workers).forEach(worker => {
    worker.on('message', messageHandler);
  });
} else {
  process.on('message', messageHandler);
}
 
function messageHandler(msg) {
  console.log(`Message received: ${msg}`);
}
// worker.js
process.send('Hello from worker!');

以上是在 Node.js 中实现进程间通信的两种方法,可以根据具体的需求选择适合的方式。