From 7477bfe56fa030a33f6451dc2dcdf6262daec9be Mon Sep 17 00:00:00 2001 From: Jamie Reece Wilson Date: Tue, 19 Sep 2023 01:42:50 +0100 Subject: [PATCH] [*] A Linux and other OS insurance policy: rel/xref 7357764c --- Source/Threading/Primitives/AuRWLock.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Source/Threading/Primitives/AuRWLock.cpp b/Source/Threading/Primitives/AuRWLock.cpp index a4ebb80d..489d913d 100644 --- a/Source/Threading/Primitives/AuRWLock.cpp +++ b/Source/Threading/Primitives/AuRWLock.cpp @@ -534,7 +534,10 @@ namespace Aurora::Threading::Primitives { auto pThat = this->GetFutexConditionWriter(); AuAtomicAdd(pThat, 1u); - InternalLTSWakeOne(pThat); + if (AuAtomicLoad(&this->writersPending_)) + { + InternalLTSWakeOne(pThat); + } } else { @@ -564,9 +567,11 @@ namespace Aurora::Threading::Primitives if (gUseFutexRWLock) { auto pThat = this->GetFutexConditionWriter(); - AuUInt32 uCount = AuAtomicLoad(&this->writersPending_) + iBias; - AuAtomicAdd(pThat, uCount); - InternalLTSWakeCount(pThat, uCount); + if (auto uCount = AuUInt32(AuAtomicLoad(&this->writersPending_) + iBias)) + { + AuAtomicAdd(pThat, uCount); + InternalLTSWakeCount(pThat, uCount); + } } else {