From ba34c2a75c28007d4cd1015e1921031e39ef1c35 Mon Sep 17 00:00:00 2001 From: Ernest Borowski Date: Mon, 27 Jul 2020 00:48:45 +0200 Subject: [PATCH] Fix tests hanging in MultiQueueWaiter destructor. std::condition_variable_any destructor is only safe to invoke if all threads have been notified. Reference: https://en.cppreference.com/w/cpp/thread/condition_variable_any/%7Econdition_variable_any Signed-off-by: Ernest Borowski --- src/threaded_queue.hh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/threaded_queue.hh b/src/threaded_queue.hh index c2927640..bca221b8 100644 --- a/src/threaded_queue.hh +++ b/src/threaded_queue.hh @@ -46,6 +46,9 @@ private: struct MultiQueueWaiter { std::condition_variable_any cv; + ~MultiQueueWaiter() { + cv.notify_all(); + } static bool hasState(std::initializer_list queues) { for (BaseThreadQueue *queue : queues) {