whale-plus
Version:
A Component Library for Vue 3
38 lines (33 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var ChunkSplitor = require('../ChunkSplitor.js');
const import_meta = {};
class MultiThreadSplitor extends ChunkSplitor.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());
}
}
exports.MultiThreadSplitor = MultiThreadSplitor;
//# sourceMappingURL=MultiThreadSplitor.js.map