76template <
typename Function>
116 m_executing(false) {}
123 template <
typename Function>
133 std::vector<Task *> m_tasks;
180 std::thread *threadHandle;
189 static thread_local ThreadData *tl_threadData;
191 bool TryRunTask(ThreadData *thread,
bool allowJobs =
true);
192 void ExecTask(
Task *task);
193 bool HasTasks(ThreadData *thread);
194 static ThreadData *GetThreadData();
196 void WakeForNewTasks();
197 void WakeForFinishedTasks();
199 void WaitForFinishedTask();
201 std::vector<ThreadData *> m_threads;
216 std::atomic<bool> m_isRunning;
217 std::atomic<uint32_t> m_numAliveThreads;
Definition TaskGraph.cpp:21
Definition TaskGraph.cpp:20
Definition TaskGraph.h:26
std::atomic< uint32_t > m_dependants
Definition TaskGraph.h:31
bool IsComplete()
Definition TaskGraph.h:33
CompleteNotifier()
Definition TaskGraph.h:28
Definition JobQueue.h:108
Definition TaskGraph.h:77
LambdaTask(TaskRange r, Function &&lambda)
Definition TaskGraph.h:79
void OnComplete() override
Definition TaskGraph.h:84
void OnExecute(TaskRange range) override
Definition TaskGraph.h:83
Definition Semaphore.h:16
Definition TaskGraph.cpp:26
Definition TaskGraph.h:139
TaskSet::Handle QueueTaskSetPinned(TaskSet *set)
Definition TaskGraph.cpp:220
TaskGraph()
Definition TaskGraph.cpp:100
JobQueue * GetJobQueue()
Definition TaskGraph.cpp:315
static uint32_t GetThreadNum()
Definition TaskGraph.cpp:320
void QueueTaskPinned(Task *task)
Definition TaskGraph.cpp:244
void QueueTask(Task *task)
Definition TaskGraph.cpp:212
bool CompleteTaskSet(TaskSet::Handle &set)
Definition TaskGraph.cpp:281
TaskSet::Handle QueueTaskSet(TaskSet *set)
Definition TaskGraph.cpp:200
void RunPinnedTasks()
Definition TaskGraph.cpp:299
uint32_t GetNumWorkerThreads() const
Definition TaskGraph.cpp:168
void WaitForTaskSet(TaskSet::Handle &set)
Definition TaskGraph.cpp:252
~TaskGraph()
Definition TaskGraph.cpp:114
void SetWorkerThreads(uint32_t numThreads)
Definition TaskGraph.cpp:174
Definition TaskGraph.h:92
bool AddTask(Task *task)
Definition TaskGraph.cpp:88
bool AddTaskLambda(TaskRange range, Function &&fn)
Definition TaskGraph.h:124
TaskSet()
Definition TaskGraph.h:114
bool IsExecuting()
Definition TaskGraph.h:129
Definition TaskGraph.h:52
virtual void OnComplete()
Definition TaskGraph.h:64
void SetOwner(CompleteNotifier *)
Definition TaskGraph.cpp:78
virtual void OnExecute(TaskRange range)=0
Task(TaskRange range={})
Definition TaskGraph.h:54
Definition TaskGraph.h:12
uint32_t begin
Definition TaskGraph.h:13
uint32_t end
Definition TaskGraph.h:14
Definition TaskGraph.h:99
Handle & operator=(Handle &&)=default
Handle & operator=(const Handle &)=delete
Handle(Handle &&)=default
Handle(const Handle &)=delete
bool IsComplete()
Definition TaskGraph.h:104