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
8b9b47ba59
Core/TaskScheduler: Fix WaitForTasks returning before all tasks are executed
...
This could happen because a worker only counts as active when starting a job, but after acquiring one.
So one possibility was that :
1. All workers except W1 and W2 are idle
2. W1 is about to notify as idle, as W2 got a task (but did not notify as active yet)
3. W1 notifies as idle, idle count == worker count -> wake main thread
4. W2 didn't run its task yet
2024-02-03 14:41:10 +01:00
SirLynix
d2b3b93646
Fix compilation
2024-02-02 23:48:35 +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
e3fa6fed89
Core/TaskScheduler: Fix TSan false-positive and remove std::optional
2024-02-02 21:19:17 +01:00
SirLynix
06a42b4ecb
Cleanup code
2024-02-02 17:31:12 +01:00
SirLynix
fa73e463a6
Core/TaskScheduler: Fix race conditions when calling AddTask while workers are not idle
...
Update TaskScheduler.cpp
2024-02-02 16:23:00 +01:00
SirLynix
7f1ef0fe41
Core/TaskScheduler: Rework using atomics and WorkStealingQueue
2024-02-02 14:27:18 +01:00
SirLynix
369f273894
Core/TaskScheduler: Fix AddTask
2024-02-01 09:53:17 +01:00
SirLynix
5d6a094bfe
Core/TaskScheduler: Add std::hardware_destructive_interference_size fallback
...
It was implemented in GCC 12.1 which is not yet available on the CI
2024-01-31 22:16:35 +01:00
SirLynix
9db333fa80
Core/TaskScheduler: Remove jthread and stop_token
...
jthread/stop_token are not yet implemented in libc++ and on Apple Clang
2024-01-31 21:04:42 +01:00
Lynix
9d669f722e
Core: Rework TaskScheduler (WIP)
2024-01-31 16:42:25 +01:00
SirLynix
d2e2c075b4
Update copyright year
2024-01-02 12:02:14 +01:00
SirLynix
f2e77fb8a5
Rename Nz::Functor to Nz::AbstractFunctor
2023-11-17 13:19:21 +01:00
SirLynix
4b8a475bbd
Split error macro into two versions (format vs non-formating) to allow format checking at compile-time
2023-11-02 15:18:03 +01:00
SirLynix
f98cbcd00a
Copyright year update
2023-01-22 17:41:18 +01:00
SirLynix
6d0b53b39e
Core: Rework HardwareInfo
2022-09-24 15:52:29 +02:00
SirLynix
89c7bbf197
Update copyright date
2022-01-01 15:30:09 +01:00
Jérôme Leclercq
ed7ab31933
Apply copyright fix to all files
2021-10-26 14:31:35 +02:00
Lynix
c23b6dfa01
Copyright year update
...
I can't wait to see the conflicts this will cause
2020-03-05 17:27:26 +01:00
DrLynix
f383eca19a
Update copyright year
2017-01-20 12:58:35 +01:00
Lynix
1c4135fc09
Improve documentation
...
Former-commit-id: 08d70f6a53a7f12d2748d145d1fe139595a1b39e
2016-03-01 15:37:05 +01:00
Gawaboumga
c163d65da7
Documentation for Thread
...
Former-commit-id: b33bbdf473792ddcde8ffbe310722d83a1a12bcf
2016-02-21 14:29:03 +01:00
Lynix
df8da275c4
Switch from Nz prefix to namespace Nz
...
What a huge commit
Former-commit-id: 38ac5eebf70adc1180f571f6006192d28fb99897
2015-09-25 19:20:05 +02:00
Lynix
ea8d683624
Updated copyright year
...
(532 files, wow)
Former-commit-id: cbb31f1124a86720bd3a54fe589a0f849a87b434
2015-01-21 20:53:01 +01:00
Lynix
361e2a31ee
Improved submodules
...
PluginManager is now a submodule
Former-commit-id: 2e147317ab07447e134d15790386bd6d3494b9d1
2014-04-20 23:50:55 +02:00
Lynix
b30d325ca5
Made Submodules initialized when used
...
Former-commit-id: 203a4a3b07e18301ce003129bb6af22e0478d07a
2014-04-12 14:19:29 +02:00
Lynix
c096756dab
Happy thousandth commit Nazara
...
Updated copyright year (Yay, 515 file updated)
Regenerated global headers
Fixed some typo
Improved some shaders
-Blah blah blah-
Thank you all for supporting my project !
-Lynix
Former-commit-id: e4e741b318ba4f203da5ffd265bd5e516e7ffd7d
2014-01-12 20:16:21 +01:00
Lynix
0af23c11f5
Fixed TaskSchduler not releasing memory and handles
...
Former-commit-id: 4bf70d2ffdaaaea6b8ee122bb4589b3d8c68884f
2013-11-30 16:13:54 +01:00
Lynix
55aed0ec68
Rewrote Task Scheduler
...
Better and faster implementation
Former-commit-id: d765415ca0576cd843480292e30c2d7bafa7f66a
2013-11-30 13:48:01 +01:00
Lynix
459c7a4d07
Made use of atomic variables
...
In order to replace mutex-protected integer values (Performance
improvement)
Former-commit-id: d40ed2444111f00dab372f2371fe91cfd9cd2472
2013-05-03 23:12:58 +02:00
Lynix
8694f71c2a
X::Initialize no longer takes arguments
...
Former-commit-id: a8233235e89112630f2d31c637723443bd0829a4
2013-04-03 16:41:57 +02:00
Lynix
32b1d02cec
Updated copyright texts
...
Former-commit-id: 81483f7a94935c925e53b7f450e42635b1357833
2013-03-13 23:23:41 +01:00
Lynix
eca2ec3115
Stabilized TaskScheduler (Still buggy)
...
Former-commit-id: a604c6616065342b21d2c11c27974ec11935a852
2013-03-02 00:26:48 +01:00
Lynix
3a4fb198e8
Fixed TaskScheduler leak
...
Former-commit-id: 3c8a5217fdd89f4ad7acad86a184420a6abf9e2f
2013-02-15 13:41:52 +01:00
Lynix
4dc1d88f7b
Fixed TaskScheduler not resetting impl pointer
...
Former-commit-id: fdd46cdbce5b876fbb286439ccfc96f1f98ac4fe
2012-12-08 21:52:50 +01:00
Lynix
6f495c654a
Added TaskScheduler::GetWorkerCount()
...
Former-commit-id: db4bf747441a13f2d824410aa5be264b300e95d4
2012-12-06 01:01:26 +01:00
Lynix
9839e36171
Removed blanks
...
Former-commit-id: e3bcf84a1fcb36e52f953c5f18ca51aa9499ed61
2012-12-04 10:35:34 +01:00
Lynix
ef567bd223
Added Task Scheduler
...
Former-commit-id: ac37f749ae78f364db3d3edfabc8221802579989
2012-12-03 01:30:04 +01:00