From 489f45fc94dce838dfd9bb450ecec2e58800edb3 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Wed, 3 Nov 2021 02:58:31 +0200 Subject: [PATCH] lib/arch: Add IArchMultithread::wait_cond_var() for standard mutex --- src/lib/arch/IArchMultithread.cpp | 10 +++++++++- src/lib/arch/IArchMultithread.h | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lib/arch/IArchMultithread.cpp b/src/lib/arch/IArchMultithread.cpp index d63f1255..ba4dfe22 100644 --- a/src/lib/arch/IArchMultithread.cpp +++ b/src/lib/arch/IArchMultithread.cpp @@ -21,6 +21,12 @@ bool IArchMultithread::waitCondVar(ArchCond cond, ArchMutexLock& lock, double timeout) +{ + return wait_cond_var(*cond, lock.lock, timeout); +} + +bool IArchMultithread::wait_cond_var(std::condition_variable& cv, + std::unique_lock& lock, double timeout) { // we can't wait on a condition variable and also wake it up for // cancellation since we don't use posix cancellation. so we @@ -38,7 +44,7 @@ bool IArchMultithread::waitCondVar(ArchCond cond, ArchMutexLock& lock, // see if we should cancel this thread testCancelThread(); - auto ret = cond->wait_for(lock.lock, seconds_to_chrono(timeout)); + auto ret = cv.wait_for(lock, seconds_to_chrono(timeout)); // check for cancel again testCancelThread(); @@ -47,3 +53,5 @@ bool IArchMultithread::waitCondVar(ArchCond cond, ArchMutexLock& lock, return true; return false; } + + diff --git a/src/lib/arch/IArchMultithread.h b/src/lib/arch/IArchMultithread.h index 5d49245c..514d5fbe 100644 --- a/src/lib/arch/IArchMultithread.h +++ b/src/lib/arch/IArchMultithread.h @@ -110,6 +110,9 @@ public: */ bool waitCondVar(ArchCond cv, ArchMutexLock& lock, double timeout); + bool wait_cond_var(std::condition_variable& cv, std::unique_lock& lock, + double timeout); + // // mutex methods //