mutils.job_manager

Modules

debug_data
module mutils.job_manager.debug_data

Module used to store information about executed jobs. Information is stored using function pointer and times of start and end of a job.

debug_sink
module mutils.job_manager.debug_sink

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.

execution_manager
module mutils.job_manager.execution_manager
Undocumented in source.
fiber_cache
module mutils.job_manager.fiber_cache

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.

manager
module mutils.job_manager.manager

Module selects manager singlethreated/multithreaded

manager_multithreaded
module mutils.job_manager.manager_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.

manager_singlethreated
module mutils.job_manager.manager_singlethreated

Module implements singlethreated job manager with fibers (coroutines). Rather for debugging than for anything else.

manager_tests
module mutils.job_manager.manager_tests

Multithreated test may take some space so they are there.

manager_utils
module mutils.job_manager.manager_utils

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

shared_utils
module mutils.job_manager.shared_utils

Module with helper functions for multithreaded modules

universal_delegate
module mutils.job_manager.universal_delegate

Module contains UniversalDelegate, usefull to change complicated delegates to void delegate(void)

utils
module mutils.job_manager.utils

Module with some usefull functions