如何创建多个子 fork 并在子进程和主进程之间发送多条消息
How to create multiple child forks and have multiple messages being sent between child processes and main process
我正在尝试创建几个子分支(使用单独的 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");
});
}
这对一个 worker 来说工作正常,但是,当我使用两个 worker 时,似乎在创建第二个 worker 时消息侦听器被覆盖了。这导致第一个工人停止,只有第二个工人继续。例如,如果我使用以下内容,那么工作人员可以正常工作:
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");
});
有什么解决办法吗?
好吧,关键是在 worker 'message' 中传递工人编号,因为使用 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);
});
我正在尝试创建几个子分支(使用单独的 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");
});
}
这对一个 worker 来说工作正常,但是,当我使用两个 worker 时,似乎在创建第二个 worker 时消息侦听器被覆盖了。这导致第一个工人停止,只有第二个工人继续。例如,如果我使用以下内容,那么工作人员可以正常工作:
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");
});
有什么解决办法吗?
好吧,关键是在 worker 'message' 中传递工人编号,因为使用 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);
});