Skip to content

Commit f1ae635

Browse files
Improved ManualResetEvent timeout functionality
1 parent 604b1f7 commit f1ae635

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed

src/lib/ManualResetEvent.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,12 @@ bool ManualResetEvent::Wait(const int32_t timeout)
5858
{
5959
UniqueLock lock(m_mutex);
6060

61+
auto isSignaled = [this] { return m_signaled.load(); };
62+
6163
if (timeout > -1)
62-
{
63-
if (!m_signaled)
64-
m_handle.wait_for(lock, milliseconds(timeout));
65-
}
64+
m_handle.wait_until(lock, steady_clock::now() + milliseconds(timeout), isSignaled);
6665
else
67-
{
68-
while (!m_signaled)
69-
m_handle.wait(lock);
70-
}
66+
m_handle.wait(lock, isSignaled);
7167

7268
return m_signaled;
7369
}

0 commit comments

Comments
 (0)