Games Task Scheduler (GTS)
A multi-processor scheduling framework for games engines
|
Add large page support.
Add NUMA support.
Add statistics.
Optimize.
Abstract into interface and make a concrete WorkStealingMicroScheduler. Interface will allow other algorithms to be explored.
Explore making priorities global to the scheduler. Currently they are only local to each thread.
Try Robin Hood hashing. (Lock cost may be prohibitive.)
Try Striped locks to protect slots instead of locks per slot.
Try 1-byte per table entry trick and use SSE for compares. (see Skarupke and Kulukundis)
Implement table shrinking.
Divise a reclaimation system (hazard pointers etc.) the avoid the need for cleanup().
Add equals template parameter.
Add size() and empty()? requires shared counter :(
Implement delete()
Make more methods thread-safe.
Cleanup and Optimize