Цель: создать многоразовый массив веб-работников для доступа к каждому из них в зависимости от его положения в массиве, например, работники [1] получат доступ к первому встроенному ядру, 2 - ко второму и так далее. Это делается для того, чтобы отправлять им сообщения при необходимости (не только при создании).
Код ниже не работает (из-за того, что рабочий не определен во время пост-сообщения во втором цикле for) Если возможно, хотел бы, чтобы кто-то дал исправление, если он может, или причину, по которой это невозможно, и объясните разницу между этим и потоком .js пул потоков.
Спасибо, ребята, если хотите, это проще говоря, просто покажите способ упорядочить группу работников в соответствии с порядком, в котором они были созданы.
let workers=[]
workersWork();
function workersWork() {
let coreAmount =window.navigator.hardwareConcurrency;
for(let i = 0;i<coreAmount ;i++){
workers.push(new Worker("./testChildWorker.js"))
}
if(workers.length === coreAmount){
for (let i = 0; i< coreAmount;i++){
let worker = workers[i]
let message ={Procedure:"start",coreCount:i,version:dbVersion};
worker.postMessage(message);
worker.onmessage = messageFunction
}
}};
function messageFunction(event) {
let worker= workers[event.data.coreCount]
worker.postmessage("hello")
let message = event.data;
alert(message.object.id);
}