ArturAralin
@ArturAralin
Программист, Музыкант

Можно ли использовать один MessagePort для множества воркеров?

У меня есть воркер A, который создается и присылает в ответ MessagePort

// worker1.js
const { parentPort, MessageChannel } = require('worker_threads');

const { port1, port2 } = new MessageChannel();

port1.on('message', (msg) => {
  console.log(msg);
})

parentPort.postMessage(port2, [port2]);


Код вокера, который будет отправлять в порт данные
// sub_worker.js
const { parentPort, MessageChannel } = require('worker_threads');

parentPort.on('message',  (port) => {
  port.postMessage('some data')
});


В таком варианте выдает ошибку DataCloneError: MessagePort in transfer list is already detached
// main thread
const { Worker } = require('worker_threads');

const mw = new Worker('worker1.js');
mw.on('message', (port) => {
  for (let i = 0; i < 5; i++) {
    const w = new Worker('sub_worker.js');
    w.postMessage(port, [port]);
  }
})
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
zabudkin
@zabudkin
Инженер-системотехник, программист, админ, ТПУ!!!!
детач и всё будет
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы