27 return !!(State.load(std::memory_order_acquire) & IsNotifiedFlag);
59 uint8 CurrentState = State.load(std::memory_order_acquire);
60 if (CurrentState & IsNotifiedFlag)
68 if ((CurrentState & MaybeWaitingFlag) ||
69 State.compare_exchange_weak(CurrentState, MaybeWaitingFlag, std::memory_order_acq_rel))
73 uint8 NewState = State.load(std::memory_order_relaxed);
74 return !(NewState & IsNotifiedFlag) && (NewState & MaybeWaitingFlag);
75 },
nullptr, WaitTime);
85 const uint8 CurrentState = State.exchange(IsNotifiedFlag, std::memory_order_release);
86 if (!(CurrentState & IsNotifiedFlag) && (CurrentState & MaybeWaitingFlag))
88 ParkingLot::WakeAll(&State);
97 State.fetch_and(~IsNotifiedFlag, std::memory_order_release);
101 static constexpr uint8 IsNotifiedFlag = 1 << 0;
102 static constexpr uint8 MaybeWaitingFlag = 1 << 1;
104 std::atomic<uint8> State = 0;
Definition ManualResetEvent.h:15
FManualResetEvent & operator=(const FManualResetEvent &)=delete
FManualResetEvent(const FManualResetEvent &)=delete
constexpr FManualResetEvent()=default
void Notify()
Definition ManualResetEvent.h:83
bool IsNotified() const
Definition ManualResetEvent.h:25
void Reset()
Definition ManualResetEvent.h:95
void Wait()
Definition ManualResetEvent.h:33
bool WaitFor(FMonotonicTimeSpan WaitTime)
Definition ManualResetEvent.h:44
bool WaitUntil(FMonotonicTimePoint WaitTime)
Definition ManualResetEvent.h:55
FWaitState WaitUntil(const void *Address, TFunctionWithContext< bool()> CanWait, TFunctionWithContext< void()> BeforeWait, FMonotonicTimePoint WaitTime)
Definition ParkingLot.h:78
Definition AdvancedWidgetsModule.cpp:13
Definition MonotonicTime.h:74
constexpr bool IsInfinity() const
Definition MonotonicTime.h:93
static UE_API FMonotonicTimePoint Now()
Definition MonotonicTime.cpp:10
static constexpr FMonotonicTimePoint Infinity()
Definition MonotonicTime.h:80
Definition MonotonicTime.h:20
constexpr bool IsZero() const
Definition MonotonicTime.h:40