我如何使每个工作者使用Node.JS列表的第一个元素?



我正在使用cluster (node js),我希望每个worker使用数组的第一个元素,我想使用这个方法,因为我不想使用for循环

Multi_processing = (() => {
let name;
x = [1,2,3,4]
return async() => {

if (cluster.isMaster) {

// name = await prompt(' input ');// input which I want to be reused in else 
console.log(`Master ${process.pid} is running`);
for (let i = 0; i <2; i++) {
cluster.fork();

}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} finished`);
});
} else {
console.log(x.shift()) // name is undefined
console.log(`Worker ${process.pid} started`);
console.log(x)
}
};
})();
Multi_processing();

所以我这样做了,所以第一个工作者开始使用第一个元素,然后删除它,等等。

您正在使用单独的内存创建单独的进程。数组被复制到每个进程中。实现您想要的最简单方法是将值传递给每个进程:

const cluster = require('cluster');
Multi_processing = (() => {
return async () => {
if (cluster.isMaster) {
x = [1, 2, 3, 4];
console.log(`Master ${process.pid} is running`);
for (let i = 0; i < 2; i++) {
cluster.fork({ x: x[i] });
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} finished`);
});
} else {
console.log(`Worker ${process.pid} started`);
console.log(process.env.x);
}
};
})();
Multi_processing();

另一种方法是实现进程间通信(IPC),让worker和master通信。在这里你可以找到更多关于Node.js中IPC的信息。

相关内容

  • 没有找到相关文章

最新更新