Changeset View
Changeset View
Standalone View
Standalone View
src/scheduler.cpp
Show First 20 Lines • Show All 175 Lines • ▼ Show 20 Lines | std::function<void(void)> callback; | ||||
m_callbacks_pending.pop_front(); | m_callbacks_pending.pop_front(); | ||||
} | } | ||||
// RAII the setting of fCallbacksRunning and calling | // RAII the setting of fCallbacksRunning and calling | ||||
// MaybeScheduleProcessQueue | // MaybeScheduleProcessQueue | ||||
// to ensure both happen safely even if callback() throws. | // to ensure both happen safely even if callback() throws. | ||||
struct RAIICallbacksRunning { | struct RAIICallbacksRunning { | ||||
SingleThreadedSchedulerClient *instance; | SingleThreadedSchedulerClient *instance; | ||||
RAIICallbacksRunning(SingleThreadedSchedulerClient *_instance) | explicit RAIICallbacksRunning(SingleThreadedSchedulerClient *_instance) | ||||
: instance(_instance) {} | : instance(_instance) {} | ||||
~RAIICallbacksRunning() { | ~RAIICallbacksRunning() { | ||||
{ | { | ||||
LOCK(instance->m_cs_callbacks_pending); | LOCK(instance->m_cs_callbacks_pending); | ||||
instance->m_are_callbacks_running = false; | instance->m_are_callbacks_running = false; | ||||
} | } | ||||
instance->MaybeScheduleProcessQueue(); | instance->MaybeScheduleProcessQueue(); | ||||
} | } | ||||
Show All 25 Lines |