TelegramPWA/src/util/launchMediaWorkers.ts
2023-04-25 17:28:03 +04:00

26 lines
746 B
TypeScript

import type { MediaWorkerApi } from '../lib/mediaWorker/index.worker';
import type { Connector } from './PostMessageConnector';
import { createConnector } from './PostMessageConnector';
export const MAX_WORKERS = Math.min(navigator.hardwareConcurrency || 4, 4);
let instances: {
worker: Worker;
connector: Connector<MediaWorkerApi>;
}[] | undefined;
export default function launchMediaWorkers() {
if (!instances) {
instances = new Array(MAX_WORKERS).fill(undefined).map(
() => {
const worker = new Worker(new URL('../lib/mediaWorker/index.worker.ts', import.meta.url));
const connector = createConnector<MediaWorkerApi>(worker);
return { worker, connector };
},
);
}
return instances;
}