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: 'setName', name: `Worker ${parseInt(i) + 1}` }) } } export function spread(threads, script, data, shouldEval) { return new Promise((resolve, reject) => { const worker = new Worker( script, { workerData: data, eval: shouldEval ?? false } ) worker.on('message', resolve) worker.on('error', reject) worker.on('exit', (code) => { if (code !== 0) reject(new Error(`Process stopped with code: ${code}`)) }) }) }