diff --git a/Source/Threading/Primitives/AuConditionVariable.NT.cpp b/Source/Threading/Primitives/AuConditionVariable.NT.cpp index 60b97052..2479dd21 100644 --- a/Source/Threading/Primitives/AuConditionVariable.NT.cpp +++ b/Source/Threading/Primitives/AuConditionVariable.NT.cpp @@ -382,7 +382,7 @@ namespace Aurora::Threading::Primitives while (true) { if (AuAtomicCompareExchange(&this->wlist, - expected - uAwoken, + (expected - uAwoken) << kShiftCountByBits, original) == original) { InternalLTSWakeAll((void *)&this->wlist); @@ -457,10 +457,10 @@ namespace Aurora::Threading::Primitives auto uCount = expected - uAwoken; if (AuAtomicCompareExchange(&this->wlist, - uCount, + uCount << kShiftCountByBits, original) == original) { - InternalLTSWakeCount((void *)&this->wlist, uCount); + InternalLTSWakeCount((void *)&this->wlist, uAwoken); return; } else