diff options
author | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2024-07-10 12:53:14 +0200 |
---|---|---|
committer | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2024-08-21 12:19:43 +0200 |
commit | 28619e26cf35227c3ddab35878e1045f82895657 (patch) | |
tree | d32edb7c7690310e769bae9cf5c21026ad1891e0 /modules/gdscript/language_server/gdscript_language_server.cpp | |
parent | bd0959ebdd8819321f9b24880d05b43eb2aaa4cc (diff) | |
download | redot-engine-28619e26cf35227c3ddab35878e1045f82895657.tar.gz |
ResourceLoader: Enhance deadlock prevention
Benefits:
- Simpler code. The main load function is renamed so it's apparent that it's not just a thread entry point anymore.
- Cache and thread modes of the original task are honored. A beautiful consequence of this is that, unlike formerly, re-issued loads can use the resource cache, which makes this mechanism much more performant.
- The newly added getter for caller task id in WorkerThreadPool allows to remove the custom tracking of that in ResourceLoader.
- The check to replace a cached resource and the replacement itself happen atomically. That fixes deadlock prevention leading to multiple resource instances of the same one on disk. As a side effect, it also makes the regular check for replace load mode more robust.
Diffstat (limited to 'modules/gdscript/language_server/gdscript_language_server.cpp')
0 files changed, 0 insertions, 0 deletions