import { Worker, isMainThread, parentPort, workerData } from 'node:worker_threads'; import { once } from 'node:events'; if (isMainThread) { const buffer = new Uint8Array([2, 4]).buffer; const worker = new Worker(new URL(import.meta.url), { workerData: buffer, transferList: [buffer], }); const exited = once(worker, 'exit'); const [total] = await once(worker, 'message'); await exited; console.log(total, buffer.byteLength); } else { parentPort.postMessage([...new Uint8Array(workerData)].reduce((a, b) => a + b, 0)); }