mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-12-09 16:21:51 +00:00
Compression: Terminate workers after use
While the browser engine can clean up workers automatically, it's a good idea to terminate them as soon as we don't need those anymore. It's generally suggested to reuse a single worker for repetitive operations, but implementing such a system is much harder. In addition, spawning a new worker for each operation allows (de)compressing multiple blobs in parallel :)
This commit is contained in:
parent
82dae1158e
commit
7cb3477a90
@ -23,6 +23,7 @@ export class DefaultCompression implements Compression {
|
||||
resolve(response.result);
|
||||
});
|
||||
|
||||
this.scheduleWorkerTermination(worker);
|
||||
worker.postMessage(data);
|
||||
return promise;
|
||||
}
|
||||
@ -43,7 +44,13 @@ export class DefaultCompression implements Compression {
|
||||
resolve(response.result);
|
||||
});
|
||||
|
||||
this.scheduleWorkerTermination(worker);
|
||||
worker.postMessage(data, [data.buffer]);
|
||||
return promise;
|
||||
}
|
||||
|
||||
private scheduleWorkerTermination(worker: Worker): void {
|
||||
worker.addEventListener("message", () => worker.terminate(), { once: true });
|
||||
worker.addEventListener("error", () => worker.terminate(), { once: true });
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user