1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-20 14:45:44 +00:00

WorkerThreadPool: Fix end-of-yield logic potentially leading to deadlocks

(cherry picked from commit 5dade0e08b)
This commit is contained in:
Pedro J. Estébanez
2024-08-28 15:26:08 +02:00
committed by Rémi Verschelde
parent f273c7c773
commit 2c612abdd1

View File

@@ -468,7 +468,10 @@ void WorkerThreadPool::_wait_collaboratively(ThreadData *p_caller_pool_thread, T
p_caller_pool_thread->signaled = false;
if (IS_WAIT_OVER) {
if (unlikely(p_task == ThreadData::YIELDING)) {
p_caller_pool_thread->yield_is_over = false;
}
if (!exit_threads && was_signaled) {
// This thread was awaken for some additional reason, but it's about to exit.
// Let's find out what may be pending and forward the requests.