23 check(Request->NextRequest ==
nullptr);
28 Tail->NextRequest = Request;
32 check(Head ==
nullptr);
44 EnqueueByPriorityInternal(Request);
60 Head = Tail =
nullptr;
72 Requests = Requests->NextRequest;
77 T*
NewHead = Requests->NextRequest;
80 Requests->NextRequest =
nullptr;
99 check(Request !=
nullptr);
105 if (RemoveInternal(Request))
107 EnqueueByPriorityInternal(Request);
118 void EnqueueByPriorityInternal(T* Request)
120 check(Request->NextRequest ==
nullptr);
122 if (Head ==
nullptr || Request->Priority > Head->Priority)
126 check(Tail ==
nullptr);
130 Request->NextRequest = Head;
133 else if (Request->Priority <= Tail->Priority)
135 check(Tail !=
nullptr);
136 Tail->NextRequest = Request;
144 while (It->NextRequest !=
nullptr &&
Request->Priority <= It->NextRequest->Priority)
146 It = It->NextRequest;
149 Request->NextRequest = It->NextRequest;
154 bool RemoveInternal(T* Request)
156 check(Request !=
nullptr);
159 check(Tail ==
nullptr);
168 check(Head ==
nullptr);
172 Request->NextRequest =
nullptr;
178 while (It->NextRequest && It->NextRequest != Request)
180 It = It->NextRequest;
183 if (It->NextRequest == Request)
185 It->NextRequest = It->NextRequest->NextRequest;
186 Request->NextRequest =
nullptr;
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define TRACE_CPUPROFILER_EVENT_SCOPE(Name)
Definition CpuProfilerTrace.h:528
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define MAX_int32
Definition NumericLimits.h:25
Definition ScopeLock.h:141
Definition ThreadSafeIntrusiveQueue.h:19
void EnqueueByPriority(T *Request)
Definition ThreadSafeIntrusiveQueue.h:41
T * Dequeue(int32 NumToRemove=MAX_int32)
Definition ThreadSafeIntrusiveQueue.h:49
int32 Num() const
Definition ThreadSafeIntrusiveQueue.h:111
void Reprioritize(T *Request, int32 NewPriority)
Definition ThreadSafeIntrusiveQueue.h:97
void Enqueue(T *Request)
Definition ThreadSafeIntrusiveQueue.h:21
NO_LOGGING.
Definition Client.h:20