File tree Expand file tree Collapse file tree 4 files changed +16
-13
lines changed
Expand file tree Collapse file tree 4 files changed +16
-13
lines changed Original file line number Diff line number Diff line change @@ -143,7 +143,7 @@ void SingleThreadedSchedulerClient::MaybeScheduleProcessQueue()
143143 if (m_are_callbacks_running) return ;
144144 if (m_callbacks_pending.empty ()) return ;
145145 }
146- m_pscheduler-> schedule (std::bind (&SingleThreadedSchedulerClient::ProcessQueue, this ) , std::chrono::system_clock::now ());
146+ m_scheduler. schedule ([ this ] { this -> ProcessQueue (); } , std::chrono::system_clock::now ());
147147}
148148
149149void SingleThreadedSchedulerClient::ProcessQueue ()
@@ -179,8 +179,6 @@ void SingleThreadedSchedulerClient::ProcessQueue()
179179
180180void SingleThreadedSchedulerClient::AddToProcessQueue (std::function<void ()> func)
181181{
182- assert (m_pscheduler);
183-
184182 {
185183 LOCK (m_callbacks_mutex);
186184 m_callbacks_pending.emplace_back (std::move (func));
@@ -190,7 +188,7 @@ void SingleThreadedSchedulerClient::AddToProcessQueue(std::function<void()> func
190188
191189void SingleThreadedSchedulerClient::EmptyQueue ()
192190{
193- assert (!m_pscheduler-> AreThreadsServicingQueue ());
191+ assert (!m_scheduler. AreThreadsServicingQueue ());
194192 bool should_continue = true ;
195193 while (should_continue) {
196194 ProcessQueue ();
Original file line number Diff line number Diff line change 55#ifndef BITCOIN_SCHEDULER_H
66#define BITCOIN_SCHEDULER_H
77
8+ #include < attributes.h>
9+ #include < sync.h>
10+ #include < threadsafety.h>
11+
12+ #include < chrono>
813#include < condition_variable>
14+ #include < cstddef>
915#include < functional>
1016#include < list>
1117#include < map>
1218#include < thread>
13-
14- #include < sync.h>
19+ #include < utility>
1520
1621/* *
1722 * Simple class for background tasks that should be run
@@ -117,7 +122,7 @@ class CScheduler
117122class SingleThreadedSchedulerClient
118123{
119124private:
120- CScheduler* m_pscheduler ;
125+ CScheduler& m_scheduler ;
121126
122127 Mutex m_callbacks_mutex;
123128 std::list<std::function<void ()>> m_callbacks_pending GUARDED_BY (m_callbacks_mutex);
@@ -127,7 +132,7 @@ class SingleThreadedSchedulerClient
127132 void ProcessQueue ();
128133
129134public:
130- explicit SingleThreadedSchedulerClient (CScheduler* pschedulerIn ) : m_pscheduler(pschedulerIn) {}
135+ explicit SingleThreadedSchedulerClient (CScheduler& scheduler LIFETIMEBOUND ) : m_scheduler{scheduler} {}
131136
132137 /* *
133138 * Add a callback to be executed. Callbacks are executed serially
Original file line number Diff line number Diff line change @@ -128,16 +128,16 @@ BOOST_AUTO_TEST_CASE(singlethreadedscheduler_ordered)
128128 CScheduler scheduler;
129129
130130 // each queue should be well ordered with respect to itself but not other queues
131- SingleThreadedSchedulerClient queue1 (& scheduler);
132- SingleThreadedSchedulerClient queue2 (& scheduler);
131+ SingleThreadedSchedulerClient queue1 (scheduler);
132+ SingleThreadedSchedulerClient queue2 (scheduler);
133133
134134 // create more threads than queues
135135 // if the queues only permit execution of one task at once then
136136 // the extra threads should effectively be doing nothing
137137 // if they don't we'll get out of order behaviour
138138 std::vector<std::thread> threads;
139139 for (int i = 0 ; i < 5 ; ++i) {
140- threads.emplace_back (std::bind (&CScheduler::serviceQueue, & scheduler) );
140+ threads.emplace_back ([&] { scheduler. serviceQueue (); } );
141141 }
142142
143143 // these are not atomic, if SinglethreadedSchedulerClient prevents
Original file line number Diff line number Diff line change @@ -40,7 +40,7 @@ struct MainSignalsInstance {
4040 // our own queue here :(
4141 SingleThreadedSchedulerClient m_schedulerClient;
4242
43- explicit MainSignalsInstance (CScheduler *pscheduler ) : m_schedulerClient(pscheduler ) {}
43+ explicit MainSignalsInstance (CScheduler& scheduler LIFETIMEBOUND ) : m_schedulerClient(scheduler ) {}
4444
4545 void Register (std::shared_ptr<CValidationInterface> callbacks)
4646 {
@@ -92,7 +92,7 @@ static CMainSignals g_signals;
9292void CMainSignals::RegisterBackgroundSignalScheduler (CScheduler& scheduler)
9393{
9494 assert (!m_internals);
95- m_internals. reset ( new MainSignalsInstance (& scheduler) );
95+ m_internals = std::make_unique< MainSignalsInstance>( scheduler);
9696}
9797
9898void CMainSignals::UnregisterBackgroundSignalScheduler ()
You can’t perform that action at this time.
0 commit comments