From 96d5783db2f50b56fc0440c35b1033045bee0b54 Mon Sep 17 00:00:00 2001 From: Martin Ridgers Date: Thu, 11 Nov 2021 10:18:16 +0100 Subject: Check if an event is already set before waiting on it --- zencore/thread.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'zencore/thread.cpp') diff --git a/zencore/thread.cpp b/zencore/thread.cpp index e422d7ce3..3e40b6336 100644 --- a/zencore/thread.cpp +++ b/zencore/thread.cpp @@ -200,6 +200,12 @@ Event::Wait(int TimeoutMs) if (TimeoutMs >= 0) { std::unique_lock Lock(Inner->Mutex); + + if (Inner->bSet) + { + return true; + } + return Inner->CondVar.wait_for( Lock, std::chrono::milliseconds(TimeoutMs), @@ -208,7 +214,12 @@ Event::Wait(int TimeoutMs) } std::unique_lock Lock(Inner->Mutex); - Inner->CondVar.wait(Lock, [&] { return Inner->bSet; }); + + if (!Inner->bSet) + { + Inner->CondVar.wait(Lock, [&] { return Inner->bSet; }); + } + return true; #endif } -- cgit v1.2.3