18 template <
typename SizeType = u
int32>
29 SizeType Expected = 0;
38 while (Lock.load(std::memory_order_relaxed) != 0)
47 Lock.store(0, std::memory_order_release);
52 SizeType
LocalValue = Lock.load(std::memory_order_relaxed);
59 return Lock.compare_exchange_strong(
LocalValue,
LocalValue + 1, std::memory_order_acquire, std::memory_order_relaxed);
64 Lock.fetch_sub(1, std::memory_order_release);
76 std::atomic<SizeType> Lock = 0;
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition RWSpinLock.h:20
UE_NONCOPYABLE(TRWSpinLock)
bool TryWriteLock()
Definition RWSpinLock.h:27
void ReadUnlock()
Definition RWSpinLock.h:62
void WriteUnlock()
Definition RWSpinLock.h:45
void ReadLock()
Definition RWSpinLock.h:67
bool TryReadLock()
Definition RWSpinLock.h:50
void WriteLock()
Definition RWSpinLock.h:33
Definition AdvancedWidgetsModule.cpp:13
Definition NumericLimits.h:41