/////////////////////////////////////////// ///////////////// Timer /////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// ///////////////// Timer /////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// ///////////////// Timer /////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// Atomics ////////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// ///////////////// Timer /////////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// BetterC Support ////////////// ///////////////////////////////////////////
/////////////////////////////////////////// ///////////////// Pause /////////////////// ///////////////////////////////////////////
/////////////////////////////////////////////// ///////////////// Allocator /////////////////// ///////////////////////////////////////////////
/////////////////////////////////////////// //////////// BetterC Support ////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// BetterC Support ////////////// ///////////////////////////////////////////
/////////////////////////////////////////// //////////// BetterC Support ////////////// ///////////////////////////////////////////
High precison timer
Structure containing job data JobData memory is allocated by user JobData lifetime is managed by user JobData has to live as long as it's group or end of job execution JobData fields can be changed in del delegate and job can be added to thread pool again, to continue execution (call same function again or another if del was changed)
First in first out queue with atomic lock
Adding groups of jobs is faster and groups can have dependencies between each other
/////////////////////////////////////////// ////////// Semaphore + Thread ///////////// ///////////////////////////////////////////
/////////////////////////////////////////// ////////// Semaphore + Thread ///////////// ///////////////////////////////////////////
Structure responsible for thread in thread pool Stores jobs to be executed by this thread (jobs can be stolen by another thread) Stores cache for logs
Thread Pool Manages bounch of threads to execute given jobs as quickly as possible There are no priorities beetween jobs. Jobs added to queues in same order as they are in slices, but due to job stealing and uneven speed of execution beetween threads jobs execution order is unspecified. Number of threads executing jobs can be dynamically changed in any time. Threads removed from execution will work until the end of the program but shouldn't accept new jobs.
/////////////////////////////////////////// ///////////////// Timer /////////////////// ///////////////////////////////////////////