whale-plus
Version:
A Component Library for Vue 3
1 lines • 2.44 kB
Source Map (JSON)
{"version":3,"file":"MultiThreadSplitor.mjs","sources":["../../../../../../../../packages/upload-sdk/src/upload-client/split/imp-work/MultiThreadSplitor.ts"],"sourcesContent":["import { ChunkSplitor } from './../ChunkSplitor';\nimport type { EventEmitter } from './../../../upload-core/EventEmitter';\nimport type { Chunk } from '../FileChunk';\n\nexport class MultiThreadSplitor extends ChunkSplitor {\n private workers: Worker[] = Array.from({\n length: navigator.hardwareConcurrency || 4,\n })\n .fill(0)\n .map(\n () =>\n new Worker(new URL('./SplitWorker.ts', import.meta.url), {\n type: 'module',\n })\n );\n\n calcHash(chunks: Chunk[], emitter: EventEmitter<'chunks'>): void {\n //计算出每个worker需要处理的分片数量\n const workerSize = Math.ceil(chunks.length / this.workers.length);\n this.workers.forEach((worker, index) => {\n const start = index * workerSize;\n const end = Math.min((index + 1) * workerSize, chunks.length);\n const workerChunks = chunks.slice(start, end);\n worker.postMessage(workerChunks);\n worker.onmessage = (e) => {\n emitter.emit('chunks', e.data);\n };\n });\n }\n\n dispose(): void {\n this.workers.forEach((worker) => worker.terminate());\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAA,WAAA,GAAA,EAAA,CAAA;AAIO,MAAM,2BAA2B,YAAa,CAAA;AAAA,EAA9C,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA,CAAA;AACL,IAAQ,IAAA,CAAA,OAAA,GAAoB,MAAM,IAAK,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAU,mBAAuB,IAAA,CAAA;AAAA,KAC1C,CAAA,CACE,IAAK,CAAA,CAAC,CACN,CAAA,GAAA;AAAA,MACC,MACE,IAAI,MAAO,CAAA,IAAI,IAAI,kBAAoB,EAAA,WAAA,CAAY,GAAG,CAAG,EAAA;AAAA,QACvD,IAAM,EAAA,QAAA;AAAA,OACP,CAAA;AAAA,KACL,CAAA;AAAA,GAAA;AAAA,EAEF,QAAA,CAAS,QAAiB,OAAuC,EAAA;AAE/D,IAAA,MAAM,aAAa,IAAK,CAAA,IAAA,CAAK,OAAO,MAAS,GAAA,IAAA,CAAK,QAAQ,MAAM,CAAA,CAAA;AAChE,IAAA,IAAA,CAAK,OAAQ,CAAA,OAAA,CAAQ,CAAC,MAAA,EAAQ,KAAU,KAAA;AACtC,MAAA,MAAM,QAAQ,KAAQ,GAAA,UAAA,CAAA;AACtB,MAAA,MAAM,MAAM,IAAK,CAAA,GAAA,CAAA,CAAK,QAAQ,CAAK,IAAA,UAAA,EAAY,OAAO,MAAM,CAAA,CAAA;AAC5D,MAAA,MAAM,YAAe,GAAA,MAAA,CAAO,KAAM,CAAA,KAAA,EAAO,GAAG,CAAA,CAAA;AAC5C,MAAA,MAAA,CAAO,YAAY,YAAY,CAAA,CAAA;AAC/B,MAAO,MAAA,CAAA,SAAA,GAAY,CAAC,CAAM,KAAA;AACxB,QAAQ,OAAA,CAAA,IAAA,CAAK,QAAU,EAAA,CAAA,CAAE,IAAI,CAAA,CAAA;AAAA,OAC/B,CAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,OAAgB,GAAA;AACd,IAAA,IAAA,CAAK,QAAQ,OAAQ,CAAA,CAAC,MAAW,KAAA,MAAA,CAAO,WAAW,CAAA,CAAA;AAAA,GACrD;AACF;;;;"}