![]() |
Bitcoin ABC
0.22.15
P2P Digital Currency
|
Class used by CScheduler clients which may schedule multiple jobs which are required to be run serially. More...
#include <scheduler.h>
Public Member Functions | |
SingleThreadedSchedulerClient (CScheduler *pschedulerIn) | |
void | AddToProcessQueue (std::function< void()> func) |
Add a callback to be executed. More... | |
void | EmptyQueue () |
size_t | CallbacksPending () |
Private Member Functions | |
std::list< std::function< void()> > m_callbacks_pending | GUARDED_BY (m_cs_callbacks_pending) |
bool m_are_callbacks_running | GUARDED_BY (m_cs_callbacks_pending) |
void | MaybeScheduleProcessQueue () |
void | ProcessQueue () |
Private Attributes | |
CScheduler * | m_pscheduler |
RecursiveMutex | m_cs_callbacks_pending |
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.
Definition at line 115 of file scheduler.h.
|
inlineexplicit |
Definition at line 128 of file scheduler.h.
void SingleThreadedSchedulerClient::AddToProcessQueue | ( | std::function< void()> | func | ) |
Add a callback to be executed.
Callbacks are executed serially and memory is release-acquire consistent between callback executions. Practially, this means that callbacks can behave as if they are executed in order by a single thread.
Definition at line 202 of file scheduler.cpp.
size_t SingleThreadedSchedulerClient::CallbacksPending | ( | ) |
Definition at line 223 of file scheduler.cpp.
void SingleThreadedSchedulerClient::EmptyQueue | ( | ) |
Definition at line 213 of file scheduler.cpp.
|
private |
|
private |
|
private |
Definition at line 149 of file scheduler.cpp.
|
private |
Definition at line 167 of file scheduler.cpp.
|
private |
Definition at line 119 of file scheduler.h.
|
private |
Definition at line 117 of file scheduler.h.