Как создать несколько дочерних вилок и отправить несколько сообщений между дочерними процессами и основным процессом - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь создать несколько дочерних вилок (используя отдельный рабочий файл 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");
       }); 

Какие-нибудь решения для этого?

1 Ответ

0 голосов
/ 06 февраля 2019

Хорошо, так что ключ передает рабочий номер в «рабочем» сообщении, потому что использование работников [i-1] .send («переменная) дает неопределенную ошибку:

 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);
       }); 
»
...