15 template<
typename ResultType>
18 template<
typename TaskCollectionType>
25 template<
typename TaskCollectionType>
37 template<
int32 Index,
typename ArrayType,
typename TaskType>
40 template<
typename TaskCollectionType>
43 template<
typename TaskCollectionType>
46 template<
typename TaskCollectionType>
49 template<
typename TaskType>
64 return Pimpl.IsValid();
110 template<
typename TaskBodyType>
112 const TCHAR* DebugName,
114 ETaskPriority
Priority = ETaskPriority::Normal,
136 template<
typename TaskBodyType,
typename PrerequisitesCollectionType>
138 const TCHAR* DebugName,
141 ETaskPriority
Priority = ETaskPriority::Normal,
173 return Pimpl->GetPriority();
178 return Pimpl->GetExtendedPriority();
189 template<
typename ResultType>
244 template<
typename PrerequisitesType>
265 template<
typename TaskBodyType>
267 const TCHAR* DebugName,
269 ETaskPriority
Priority = ETaskPriority::Normal,
288 template<
typename TaskBodyType,
typename PrerequisitesCollectionType>
290 const TCHAR* DebugName,
293 ETaskPriority
Priority = ETaskPriority::Normal,
306 template<
typename TaskCollectionType>
309#if UE_TASK_TRACE_ENABLED
344 template<
int32 Index,
typename ArrayType,
typename TaskType>
350 template<
typename HigherLevelTaskType, std::enable_if_t<std::is_same_v<HigherLevelTaskType, FTask>>* =
nullptr>
353 return Prerequisite.IsCompleted();
356 template<
typename HigherLevelTaskType, std::enable_if_t<std::is_same_v<HigherLevelTaskType, FGraphEventRef>>* =
nullptr>
359 return Prerequisite.IsValid() ? Prerequisite->IsCompleted() :
false;
364 typename std::decay_t<
decltype(std::declval<
TTuple<
TaskTypes...>>().
template Get<0>())>::FTaskHandleId* =
nullptr>
368 Private::PrerequisitesUnpacker<0>(
Res,
Tasks...);
372 template<
typename TaskCollectionType>
380 template<
typename TaskCollectionType>
387 TEXT(
"Waiting Task"),
390 ETaskPriority::Default ,
402 template<
typename TaskCollectionType>
435 SharedData->CompletedTaskIndex.store(
Index, std::memory_order_relaxed);
436 SharedData->Event.Notify();
439 ETaskPriority::Default,
446 return SharedData->CompletedTaskIndex.load(std::memory_order_relaxed);
453 template<
typename TaskCollectionType>
469 std::atomic<uint32> RefCount;
482 FTaskEvent Event = SharedData->Event;
483 uint32 PrevRefCount = SharedData->RefCount.fetch_sub(1, std::memory_order_acq_rel);
485 if (UNLIKELY(PrevRefCount == Num))
496 ETaskPriority::Default,
507 template<
typename TaskType>
531 return ExtendedPriority;
541 FString FullHelpText;
548 template<
typename ResultType,
typename...
ArgTypes>
554 ETaskPriority::Default,
555 EExtendedTaskPriority::Inline);
577 bCanceled.store(
true, std::memory_order_relaxed);
582 return bCanceled.load(std::memory_order_relaxed);
586 std::atomic<bool> bCanceled{
false };
608 bool bHasActiveScope =
false;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
typename TInvokeResult< FuncType, ArgTypes... >::Type TInvokeResult_T
Definition Invoke.h:135
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
#define UE_SOURCE_LOCATION
Definition PreprocessorHelpers.h:71
if(Failed) console_printf("Failed.\n")
Definition IConsoleManager.h:1580
Definition IConsoleManager.h:558
Definition Launch.Build.cs:10
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition RefCounting.h:454
Definition SharedPointer.h:153
Definition StaticArray.h:26
Definition ManualResetEvent.h:15
static FTimeout Never()
Definition Timeout.h:49
static bool IsCurrentWorkCanceled()
Definition Task.h:598
UE_NONCOPYABLE(FCancellationToken)
FCancellationToken()=default
void Cancel()
Definition Task.h:575
bool IsCanceled() const
Definition Task.h:580
void AddPrerequisites(const PrerequisitesType &Prerequisites)
Definition Task.h:245
void Trigger()
Definition Task.h:250
FTaskEvent(const TCHAR *DebugName)
Definition Task.h:238
EExtendedTaskPriority GetExtendedTaskPriority() const
Definition Task.h:529
ETaskPriority GetTaskPriority() const
Definition Task.h:524
Definition TaskPrivate.h:120
bool IsValid() const
Definition Task.h:62
EExtendedTaskPriority GetExtendedPriority() const
Definition Task.h:176
bool operator==(const FTaskHandle &Other) const
Definition Task.h:161
void FTaskHandleId
Definition Task.h:58
bool IsAwaitable() const
Definition Task.h:156
void Launch(const TCHAR *DebugName, TaskBodyType &&TaskBody, PrerequisitesCollectionType &&Prerequisites, ETaskPriority Priority=ETaskPriority::Normal, EExtendedTaskPriority ExtendedPriority=EExtendedTaskPriority::None, ETaskFlags Flags=ETaskFlags::None)
Definition Task.h:137
TRefCountPtr< FTaskBase > Pimpl
Definition Task.h:183
bool TryRetractAndExecute()
Definition Task.h:98
void Launch(const TCHAR *DebugName, TaskBodyType &&TaskBody, ETaskPriority Priority=ETaskPriority::Normal, EExtendedTaskPriority ExtendedPriority=EExtendedTaskPriority::None, ETaskFlags Flags=ETaskFlags::None)
Definition Task.h:111
friend bool TryRetractAndExecute(const TaskCollectionType &Tasks, FTimeout Timeout)
Definition TaskPrivate.h:1007
friend bool UE::Tasks::Wait(const TaskCollectionType &Tasks, FTimespan InTimeout)
bool Wait() const
Definition Task.h:84
ETaskPriority GetPriority() const
Definition Task.h:171
friend void PrerequisitesUnpacker(ArrayType &Array, FirstTaskType &FirstTask, OtherTasksTypes &... OtherTasks)
Definition Task.h:338
bool IsCompleted() const
Definition Task.h:68
bool Wait(FTimespan Timeout) const
Definition Task.h:76
friend TArray< TaskTrace::FId > GetTraceIds(const TaskCollectionType &Tasks)
Definition Task.h:307
FTaskHandle(FTaskBase *Other)
Definition Task.h:53
bool operator!=(const FTaskHandle &Other) const
Definition Task.h:166
Definition TaskPrivate.h:925
Definition TaskPrivate.h:835
void GetResult()
Definition Task.h:218
ResultType & GetResult()
Definition Task.h:196
Definition OverriddenPropertySet.cpp:45
TArray< TaskTrace::FId > GetTraceIds(const TaskCollectionType &Tasks)
Definition Task.h:307
void PrerequisitesUnpacker(ArrayType &Array, FirstTaskType &FirstTask, OtherTasksTypes &... OtherTasks)
Definition Task.h:338
bool IsCompleted(const HigherLevelTaskType &Prerequisite)
Definition Task.h:351
Definition AnalyticsProviderLog.h:8
void AddNested(const TaskType &Nested)
Definition Task.h:508
TStaticArray< Private::FTaskBase *, sizeof...(TaskTypes)> Prerequisites(TaskTypes &... Tasks)
Definition Task.h:365
ETaskFlags
Definition TaskPrivate.h:89
EExtendedTaskPriority
Definition TaskPrivate.h:60
TTask< TInvokeResult_T< TaskBodyType > > Launch(const TCHAR *DebugName, TaskBodyType &&TaskBody, ETaskPriority Priority=ETaskPriority::Normal, EExtendedTaskPriority ExtendedPriority=EExtendedTaskPriority::None, ETaskFlags Flags=ETaskFlags::None)
Definition Task.h:266
bool Wait(const TaskCollectionType &Tasks, FTimespan InTimeout=FTimespan::MaxValue())
Definition Task.h:381
int32 WaitAny(const TaskCollectionType &Tasks, FTimespan Timeout=FTimespan::MaxValue())
Definition Task.h:403
TTask< ResultType > MakeCompletedTask(ArgTypes &&... Args)
Definition Task.h:549
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
static FTimespan MaxValue()
Definition Timespan.h:686
Definition TaskTrace.h:56
static constexpr FMonotonicTimeSpan FromMilliseconds(double Milliseconds)
Definition MonotonicTime.h:35