Commit Graph

6 Commits

Author SHA1 Message Date
SirLynix b69c0bb444 Core/TaskScheduler: Fix deadlock when exiting
If a worker was not given a task, it could happen to ignore the exit signal (for example if it's set before the worker started, causing it to clear the notifier boolean and test it again before checking m_running)
2024-02-04 13:43:55 +01:00
SirLynix 44617bd14d Core/TaskScheduler: Another try to remove race condition 2024-02-04 13:04:29 +01:00
SirLynix c148bc2851 UnitTests: Increase task scheduler wait duration
it seems GitHub CI is pretty bad at scheduling threads
2024-02-03 23:24:41 +01:00
SirLynix e3ad9be759 Core/TaskScheduler: Fix work ending condition
Use remaining task count instead of idle worker count, this avoids a race condition where a worker signals idle after being tasked with a new job
2024-02-03 22:40:12 +01:00
SirLynix c303bf9283 Core/TaskScheduler: Use WorkStealingQueue::pop
steal() can incorrectly return nullptr even if the list is not empty in case of concurrent access, but push and pop are not threadsafe so we use a spinlock to prevent concurrent uses
2024-02-02 23:19:29 +01:00
SirLynix adc6a5c0a5 Tests: Add task scheduler tests 2024-02-02 16:23:01 +01:00