From 58d575f316a55357d15f5c91d3fd359f7e288689 Mon Sep 17 00:00:00 2001 From: yomnes0 Date: Tue, 30 Jul 2024 08:51:37 +0200 Subject: [PATCH] [core] Handle spurious wake up in shared mutex locking functions --- srtcore/sync.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srtcore/sync.cpp b/srtcore/sync.cpp index 7a68c2a35..73cad7667 100644 --- a/srtcore/sync.cpp +++ b/srtcore/sync.cpp @@ -386,12 +386,12 @@ srt::sync::SharedMutex::~SharedMutex() void srt::sync::SharedMutex::lock() { UniqueLock l1(m_Mutex); - if (m_bWriterLocked) + while (m_bWriterLocked) m_LockWriteCond.wait(l1); m_bWriterLocked = true; - if (m_iCountRead) + while (m_iCountRead) m_LockReadCond.wait(l1); } @@ -418,7 +418,7 @@ void srt::sync::SharedMutex::unlock() void srt::sync::SharedMutex::lock_shared() { UniqueLock lk(m_Mutex); - if (m_bWriterLocked) + while (m_bWriterLocked) m_LockWriteCond.wait(lk); m_iCountRead++;