Files
squoosh/codecs/oxipng/spawn.ts
Ingvar Stepanyan 60dacff05e fixup
2020-09-24 00:03:00 +01:00

29 lines
870 B
TypeScript

import initOxiPNG, {
worker_initializer,
start_main_thread,
optimise,
} from './pkg-parallel';
import wasmUrl from './pkg-parallel/oxipng_bg.wasm';
import type { WorkerInit } from './worker';
function initWorker(worker: Worker, workerInit: WorkerInit) {
return new Promise((resolve) => {
worker.postMessage(workerInit);
worker.addEventListener('message', () => resolve(), { once: true });
});
}
async function startMainThread() {
const num = navigator.hardwareConcurrency;
const workers = Array.from({ length: num }, () => new Worker('./worker', { type: 'module' }));
await initOxiPNG(fetch(wasmUrl), undefined as any);
const workerInit: WorkerInit = worker_initializer(num);
await Promise.all(workers.map(worker => initWorker(worker, workerInit)));
start_main_thread();
return {
optimise,
};
}
export default startMainThread();