我正在尝试创建多个子派生叉(使用单独的worker js文件),并使它们与我的主js文件通信。
我尝试了以下操作:
for (var i = 1; i <= 2; i++) {
worker = childProcess.fork(path.join(__dirname, workerPath));
workers.push(worker);
worker.send("variable");
worker.on('message', function(message) {
worker.send("variable");
});
}
这对于一个工作程序很好用,但是,当我使用两个工作程序时,似乎在创建第二个工作程序时消息侦听器被覆盖。这导致第一名工人停止工作,而只有第二名工人继续工作。例如,如果我使用以下内容,则工作人员可以正常工作:
worker1 = childProcess.fork(path.join(__dirname, workerPath));
worker1.send("variable");
worker1.on('message', function(message) {
worker1.send("variable");
});
worker2 = childProcess.fork(path.join(__dirname, workerPath));
worker2.send("variable");
worker2.on('message', function(message) {
worker2.send("variable");
});
有什么解决办法吗?
答案 0 :(得分:0)
好吧,因此密钥是在工作程序“消息”中传递工作程序编号,因为使用workers [i-1] .send(“ variable)会产生未定义的错误:
for (var i = 1; i <= 2; i++) {
workers.push(childProcess.fork(path.join(__dirname, workerPath)));
workers[i-1].send("variable");
workers[i-1].on('message', function(message) {
workers[message-1].send("variable);
});