目标:根据数组中的位置创建一个可重用的Web工作者数组来访问每个工作者,例如,worker [1]将访问第二个内核2将在第二个内核中运行,依此类推。这是在需要时(不仅在创建时)向他们发布消息。
下面的代码不起作用(由于工作在postmessage中未定义,在第二个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);
}