whale-plus
Version:
A Component Library for Vue 3
34 lines (31 loc) • 985 B
JavaScript
import { ChunkSplitor } from '../ChunkSplitor.mjs';
const import_meta = {};
class MultiThreadSplitor extends ChunkSplitor {
constructor() {
super(...arguments);
this.workers = Array.from({
length: navigator.hardwareConcurrency || 4
}).fill(0).map(
() => new Worker(new URL("./SplitWorker.ts", import_meta.url), {
type: "module"
})
);
}
calcHash(chunks, emitter) {
const workerSize = Math.ceil(chunks.length / this.workers.length);
this.workers.forEach((worker, index) => {
const start = index * workerSize;
const end = Math.min((index + 1) * workerSize, chunks.length);
const workerChunks = chunks.slice(start, end);
worker.postMessage(workerChunks);
worker.onmessage = (e) => {
emitter.emit("chunks", e.data);
};
});
}
dispose() {
this.workers.forEach((worker) => worker.terminate());
}
}
export { MultiThreadSplitor };
//# sourceMappingURL=MultiThreadSplitor.mjs.map