mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-12-11 09:11:50 +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);
|
resolve(response.result);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.scheduleWorkerTermination(worker);
|
||||||
worker.postMessage(data);
|
worker.postMessage(data);
|
||||||
return promise;
|
return promise;
|
||||||
}
|
}
|
||||||
@ -43,7 +44,13 @@ export class DefaultCompression implements Compression {
|
|||||||
resolve(response.result);
|
resolve(response.result);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.scheduleWorkerTermination(worker);
|
||||||
worker.postMessage(data, [data.buffer]);
|
worker.postMessage(data, [data.buffer]);
|
||||||
return promise;
|
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