import { Worker } from 'worker_threads' let workerFarm = [] export function initWorkers(threads) { for (let i = 0; i < threads; ++i) { workerFarm.push(new Worker('./libs/utils/multithread/genericWorker.js')) } for (const i in workerFarm) { const worker = workerFarm[i] worker.postMessage({ type: 'initWorker', name: `Worker ${parseInt(i) + 1}` }) } console.log(`Initialised ${threads} workers!`) } let spreadIndex = 0 export function spread(script, data) { return new Promise( (resolve, reject) => { const worker = workerFarm[spreadIndex] worker.postMessage({ type: 'runScript', script, data }) worker.on('message', result => resolve(result)) ++spreadIndex if(spreadIndex >= workerFarm.length) spreadIndex = 0 } ) }