57 static void FinishFrameTasks();
75 static plResult CancelTask(
const plSharedPtr<plTask>& pTask, plOnTaskRunning::Enum onTaskRunning = plOnTaskRunning::WaitTillFinished);
81 plUInt32 m_uiInvocation = 0;
97 static void ReprioritizeFrameTasks();
100 static void ExecuteSomeFrameTasks(
plTime smoothFrameTime);
104 static bool HelpExecutingTasks(
const plTaskGroupID& WaitingForGroup);
154 static plResult CancelGroup(
plTaskGroupID group, plOnTaskRunning::Enum onTaskRunning = plOnTaskRunning::WaitTillFinished);
170 static void WaitForCondition(
plDelegate<
bool()> condition);
174 static void ScheduleGroupTasks(
plTaskGroup* pGroup,
bool bHighPriority);
177 static void DependencyHasFinished(
plTaskGroup* pGroup);
196 static void SetWorkerThreadCount(plInt32 iShortTasks = -1, plInt32 iLongTasks = -1);
215 static double GetThreadUtilization(
plWorkerThreadType::Enum type, plUInt32 uiThreadIndex, plUInt32* pNumTasksExecuted =
nullptr);
227 static void StopWorkerThreads();
253 template <
typename ElemType,
typename Callback>
254 static void ParallelFor(
261 template <
typename ElemType,
typename Callback>
262 static void ParallelForSingle(
269 template <
typename ElemType,
typename Callback>
270 static void ParallelForSingleIndex(
274 template <
typename ElemType>
275 static void ParallelForInternal(
285 static void WriteStateSnapshotToDGML(
plDGMLGraph& ref_graph);
289 static void WriteStateSnapshotToFile(
const char* szPath =
nullptr);
304 PL_MAKE_SUBSYSTEM_STARTUP_FRIEND(Foundation, TaskSystem);
306 static void Startup();
307 static void Shutdown();
311 static plMutex s_TaskSystemMutex;