Module used to store information about executed jobs. Information is stored using function pointer and times of start and end of a job.
Module used to efficiently store simple data from many threads. May be used for validation multithreaded algorithms. Ex. multithreaded executes 1000 jobs, each jobs adds to sink unique number. After execution if in this sink are all 1000 numbers and all are unique everything was ok.
Containers used to store Fiber objects. Allocating new Fiber is expensive so need for this containers. There are few implementations which can be easly changed and tested for performance or correctness.
Module selects manager singlethreated/multithreaded
Module implements multithreaded job manager with fibers (coroutines). Thanks to fibers any task can be stopped in the middle of execution and started again by this manager. Fibers are bound to one thread due to TLS issues and performance reasons.
Module implements singlethreated job manager with fibers (coroutines). Rather for debugging than for anything else.
Multithreated test may take some space so they are there.
Modules contains basic structures for job manager ex. FiberData, Counter. It also contains structures/functions which extens functionality of job manager like: - UniversalJob - job with parameters and return value - UniversalJobGroup - group of jobs - multithreaded - makes foreach execute in parallel
Module with helper functions for multithreaded modules
Module contains UniversalDelegate, usefull to change complicated delegates to void delegate(void)
Module with some usefull functions