aboutsummaryrefslogtreecommitdiff
path: root/src/scheduler.cpp
diff options
context:
space:
mode:
authorMatt Corallo <git@bluematt.me>2017-06-27 19:07:52 -0400
committerMatt Corallo <git@bluematt.me>2017-07-07 12:55:57 -0400
commit3192975f1d177aa9f0bbd823c6387cfbfa943610 (patch)
treec14016ecb6fc50d7fc33b002368348efa8e12745 /src/scheduler.cpp
parent08096bbbc6d6fef86943ca8ce5e6de18744d58ea (diff)
downloadbitcoin-3192975f1d177aa9f0bbd823c6387cfbfa943610.tar.xz
Flush CValidationInterface callbacks prior to destruction
Note that the CScheduler thread cant be running at this point, it has already been stopped with the rest of the init threadgroup. Thus, just calling any remaining loose callbacks during Shutdown() is sane.
Diffstat (limited to 'src/scheduler.cpp')
-rw-r--r--src/scheduler.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/scheduler.cpp b/src/scheduler.cpp
index a76a87e10a..35bf0da4be 100644
--- a/src/scheduler.cpp
+++ b/src/scheduler.cpp
@@ -191,3 +191,12 @@ void SingleThreadedSchedulerClient::AddToProcessQueue(std::function<void (void)>
}
MaybeScheduleProcessQueue();
}
+
+void SingleThreadedSchedulerClient::EmptyQueue() {
+ bool should_continue = true;
+ while (should_continue) {
+ ProcessQueue();
+ LOCK(m_cs_callbacks_pending);
+ should_continue = !m_callbacks_pending.empty();
+ }
+}