virtualx-engine/core/object
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
..
callable_method_pointer.cpp Avoid sorting CallableCustomMethodPointers by their actual address values 2023-06-20 08:40:01 -04:00
callable_method_pointer.h Prevent read-after-free in the queued CallableCustomStaticMethodPointer. 2023-11-23 23:22:08 +02:00
class_db.cpp Polish & fix editor help cache generation 2023-11-02 13:46:37 +01:00
class_db.h Polish & fix editor help cache generation 2023-11-02 13:46:37 +01:00
make_virtuals.py Fix EncodeT assignment in make_virtuals.py 2023-12-05 10:37:04 -06:00
message_queue.cpp [Core] Prevent infinite recursion when printing errors 2023-11-26 18:53:28 +01:00
message_queue.h Refactor CallQueue flushing for clarity 2023-06-23 13:27:34 +02:00
method_bind.cpp Fix method hashes with default arguments 2023-09-21 12:39:04 -05:00
method_bind.h Implement reloading of GDExtensions 2023-09-25 22:10:17 -05:00
object.cpp Remove unnecessary assignments 2023-12-13 11:06:26 -05:00
object.h Use mingw-std-threads in MinGW builds 2023-11-18 11:56:05 +01:00
object_id.h One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
ref_counted.cpp One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
ref_counted.h [Core] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-11 19:45:49 +02:00
script_instance.cpp Extract ScriptInstance to simplify includes 2023-09-06 22:54:38 +02:00
script_instance.h Extract ScriptInstance to simplify includes 2023-09-06 22:54:38 +02:00
script_language.cpp Expose Script.get_global_name() 2023-12-18 15:13:09 +01:00
script_language.h Fix missing time for some script functions in profiler 2023-12-19 19:42:21 +01:00
script_language_extension.cpp Fix missing time for some script functions in profiler 2023-12-19 19:42:21 +01:00
script_language_extension.h Fix missing time for some script functions in profiler 2023-12-19 19:42:21 +01:00
SCsub Implement native extension system 2021-06-25 17:32:45 -03:00
undo_redo.cpp Reduced output spam from rapid property changes 2023-11-12 14:49:51 +00:00
undo_redo.h Fix for stopping the Undo History being desynchronised from actual Undo queue. 2023-11-10 13:04:12 +00:00
worker_thread_pool.cpp WorkerThreadPool: Overhaul scheduling and synchronization 2024-01-08 12:45:42 +01:00
worker_thread_pool.h WorkerThreadPool: Overhaul scheduling and synchronization 2024-01-08 12:45:42 +01:00