Classes | |
class | JobGroupInterface |
class | JobGroupRef |
class | StaticJobGroupInterface< T > |
class | StaticJobGroupRef< T > |
class | StaticJobArray< T > |
Namespaces | |
maxon | |
Enumerations | |
enum class | JOBGROUPFLAGS { DEFAULT , ENQUEUEING_THREAD_WAITS , FINALIZE_ON_WAIT , THREAD_AFFINITY , NO_JOB_DESTRUCTOR , KEEP_JOBS_REFERENCED } |
enum class | JOBGROUPADDFLAGS { DEFAULT , SLOW_PRODUCER } |
enum class | STATICJOBGROUPFLAGS { DEFAULT , WILL_RUN_FINALIZER , ENQUEUEING_THREAD_WAITS , THREAD_AFFINITY , NO_JOB_DESTRUCTOR } |
enum class | STATICJOBARRAYFLAGS { DEFAULT , INITIALIZE_LATER } |
Functions | |
enum maxon::JOBGROUPFLAGS | MAXON_ENUM_FLAGS (JOBGROUPFLAGS) |
enum maxon::JOBGROUPADDFLAGS | MAXON_ENUM_FLAGS (JOBGROUPADDFLAGS) |
enum maxon::STATICJOBGROUPFLAGS | MAXON_ENUM_FLAGS (STATICJOBGROUPFLAGS) |
enum maxon::STATICJOBARRAYFLAGS | MAXON_ENUM_FLAGS (STATICJOBARRAYFLAGS) |
Variables | |
DEFAULT | |
ENQUEUEING_THREAD_WAITS | |
FINALIZE_ON_WAIT | |
THREAD_AFFINITY | |
NO_JOB_DESTRUCTOR | |
KEEP_JOBS_REFERENCED | |
SLOW_PRODUCER | |
WILL_RUN_FINALIZER | |
INITIALIZE_LATER | |
DEFAULT |
Default case.
Default behaviour: Array is empty.
Safe default case.
ENQUEUEING_THREAD_WAITS |
The enqueuing thread waits until the group has finished and might be used to execute jobs.
FINALIZE_ON_WAIT |
After Enqueue() further Add()s can be made which start the jobs ASAP. A following call to Wait() or GetResult() finalizes the group (no more jobs can be added). Can be useful if there is a lot of setup work before a job can be added.
THREAD_AFFINITY |
On Enqueue() each jobs is permanently assigned to a worker thread. This blocks load balancing and is therefore slower and only useful for special cases. If a group with thread affinity had more jobs than the queue had threads its jobs must not have dependencies or wait calls. Only supported for queues where thread affinity has been enabled.
On Enqueue() each jobs is permanently assigned to a worker thread. This blocks load balancing and therefore slower and only useful for special cases.
NO_JOB_DESTRUCTOR |
The individual jobs do not require destruction.
KEEP_JOBS_REFERENCED |
The individual jobs are kept strongly referenced until the group is finally destructed (default behaviour is to remove them after execution to avoid reference cycles).
SLOW_PRODUCER |
Assume the producer is slow and the job is finished before the producer adds the next job (only relevant when the group is already enqueued, e.g. FINALIZE_ON_WAIT). Typically your jobs should be long running enough.
WILL_RUN_FINALIZER |
A single-threaded finalizer will run after waiting for the group.
INITIALIZE_LATER |
Array consists of as many uninitialized elements as it has capacity. The caller will construct them later on (before it is added to the group).