Class used by CScheduler clients which may schedule multiple jobs which are required to be run serially. Jobs may not be run on the same thread, but no two jobs will be executed at the same time and memory will be release-acquire consistent (the scheduler will internally do an acquire before invoking a callback as well as a release at the end). In practice this means that a callback B() will be able to observe all of the effects of callback A() which executed before it.
| Name | Description |
|---|---|
util::TaskRunnerInterface | This header provides an interface and simple implementation for a task runner. Another threaded, serial implementation using a queue is available in the scheduler module's SerialTaskRunner. |
| Name | Description |
|---|---|
SerialTaskRunner [constructor] | Constructs a runner that serializes callbacks onto the given scheduler. |
flush [virtual] | Processes all remaining queue members on the calling thread, blocking until queue is empty Must be called after the CScheduler has no remaining processing threads! |
insert [virtual] | Add a callback to be executed. Callbacks are executed serially and memory is release-acquire consistent between callback executions. Practically, this means that callbacks can behave as if they are executed in order by a single thread. |
size [virtual] | Returns the number of callbacks still pending in the runner. |