virtualx-engine/core
Pedro J. Estébanez 9444d297ed WorkerThreadPool: Overhaul scheduling and synchronization
This commits rewrites the sync logic in a way that the
`use_system_threads_for_low_priority_tasks` setting, which was added due to
the lack of a cross-platform wait-for-multiple-objects functionality, can be
removed (it's as if it was effectively hardcoded to `false`).

With the new implementation, we have the best of both worlds: threads don't
have to poll, plus no bespoke threads are used.

In addition, regarding deadlock prevention, since not every possible case of
wait-deadlock could be avoided, this commits removes the current best-effort
avoidance mechanisms and keeps only a simple, pessimistic way of detection.

It turns out that the only current user of deadlock prevention, ResourceLoader,
works fine with it and so every possible situation in resource loading is now
properly handled, with no possibilities of deadlocking. There's a comment in
the code with further details.

Lastly, a potential for load tasks never being awaited/disposed is cleared.
2024-01-08 12:45:42 +01:00
..
config Merge pull request #83452 from RandomShaper/rd_common 2023-12-20 20:09:18 +01:00
crypto [Core] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-11 19:45:49 +02:00
debugger [Core] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-11 19:45:49 +02:00
error Usage notes for DEV_ASSERT macro 2023-08-02 13:29:35 +01:00
extension Fix operator documentation in GDExtension API dump with docs 2023-12-12 18:55:31 +01:00
input Add bindings for setting and getting emulation mouse from touch and touch from mouse in input 2023-12-13 08:07:36 +03:00
io WorkerThreadPool: Overhaul scheduling and synchronization 2024-01-08 12:45:42 +01:00
math Improve DynamicBVH code to make it clearer how the stack/heap works. 2023-12-13 09:03:19 +11:00
object WorkerThreadPool: Overhaul scheduling and synchronization 2024-01-08 12:45:42 +01:00
os WorkerThreadPool: Overhaul scheduling and synchronization 2024-01-08 12:45:42 +01:00
string Merge pull request #70315 from RandomShaper/d3d12_mesa 2023-12-12 21:58:57 +01:00
templates Make PagedAllocator more compatible (esp., with HashMap) 2023-12-20 12:05:27 +01:00
variant Merge pull request #83452 from RandomShaper/rd_common 2023-12-20 20:09:18 +01:00
core_bind.cpp Add Direct3D 12 RenderingDevice implementation 2023-12-12 19:10:04 +01:00
core_bind.h Add Direct3D 12 RenderingDevice implementation 2023-12-12 19:10:04 +01:00
core_builders.py Donors: Change tiers to match Dev Fund, sync latest data 2023-11-14 15:40:44 +01:00
core_constants.cpp Fix StringName leaks in GDExtension, core, and editor themes 2023-10-18 17:36:20 +02:00
core_constants.h Make global scope enums accessible as types in GDScript 2023-02-19 13:00:07 -03:00
core_globals.cpp One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
core_globals.h One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
core_string_names.cpp One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
core_string_names.h One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
doc_data.cpp Display BitField[Enum] in docs to distinguish from Enum 2023-06-15 17:23:02 +03:00
doc_data.h GDScript: Add @deprecated and @experimental doc comment tags 2023-07-08 18:13:19 +03:00
register_core_types.cpp WorkerThreadPool: Overhaul scheduling and synchronization 2024-01-08 12:45:42 +01:00
register_core_types.h One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
SCsub Add 2D navigation mesh baking 2023-09-25 19:48:14 +02:00
typedefs.h Split RenderingDevice into API-agnostic and RenderingDeviceDriver parts 2023-12-20 19:18:08 +01:00
version.h Fix Windows StringFileInfo structure 2023-04-12 22:08:49 +02:00