Games Task Scheduler (GTS)
A multi-processor scheduling framework for games engines
Todo List
Class gts::BinnedAllocator

Add debug mode.

Add large page support.

Add NUMA support.

Add statistics.

Optimize.

Member gts::ComputeResource::setExecutionNormalizationFactor (double exeWeight)
Have the MicroScheduler set this during initialization instead of the user.
Class gts::MicroScheduler

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.

Class gts::OctRange< TIterType >
Add get neighbor functions.
Class gts::ParallelHashTable< TKey, TValue, THasher, TAccessorSharedMutex, TGrowSharedMutex, TAllocator >

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 :(

Class gts::ParallelVector< T, TSharedMutex, TAllocator >

Implement insert()

Implement delete()

Make more methods thread-safe.

Class gts::ParallelWavefront

Implement 3D version.

Cleanup and Optimize

Class gts::QuadRange< TIterType >
Add get neighbor functions.