Update documentation for SingleThreadedSchedulerClient() to specify the memory model
This commit is contained in:
parent
9994d01d8b
commit
b296b425a7
1 changed files with 14 additions and 3 deletions
|
@ -86,9 +86,13 @@ private:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class used by CScheduler clients which may schedule multiple jobs
|
* Class used by CScheduler clients which may schedule multiple jobs
|
||||||
* which are required to be run serially. Does not require such jobs
|
* which are required to be run serially. Jobs may not be run on the
|
||||||
* to be executed on the same thread, but no two jobs will be executed
|
* same thread, but no two jobs will be executed
|
||||||
* at the same time.
|
* 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.
|
||||||
*/
|
*/
|
||||||
class SingleThreadedSchedulerClient {
|
class SingleThreadedSchedulerClient {
|
||||||
private:
|
private:
|
||||||
|
@ -103,6 +107,13 @@ private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SingleThreadedSchedulerClient(CScheduler *pschedulerIn) : m_pscheduler(pschedulerIn) {}
|
explicit SingleThreadedSchedulerClient(CScheduler *pschedulerIn) : m_pscheduler(pschedulerIn) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a callback to be executed. Callbacks are executed serially
|
||||||
|
* and memory is sequentially consistent between callback executions.
|
||||||
|
* Practially, this means that callbacks can behave as if they are executed
|
||||||
|
* in order by a single thread.
|
||||||
|
*/
|
||||||
void AddToProcessQueue(std::function<void (void)> func);
|
void AddToProcessQueue(std::function<void (void)> func);
|
||||||
|
|
||||||
// Processes all remaining queue members on the calling thread, blocking until queue is empty
|
// Processes all remaining queue members on the calling thread, blocking until queue is empty
|
||||||
|
|
Loading…
Reference in a new issue