16static const uint32_t MAX_THREADS = 64;
53 bool HasJob()
const {
return m_job !=
nullptr; }
67 static Uint64 s_nextId;
98 const Handle *GetHandle()
const {
return m_handle; }
99 void SetHandle(Handle *handle) { m_handle.store(handle, std::memory_order_release); }
100 void ClearHandle() { m_handle =
nullptr; }
102 std::atomic<bool> cancelled;
103 std::atomic<Handle *> m_handle;
140 Uint32
RunJobs(Uint32 count = 1);
143 std::deque<Job *> m_queue;
144 std::deque<Job *> m_finished;
162 m_queue(other.m_queue),
163 m_jobs(std::move(other.m_jobs)) { other.m_queue =
nullptr; }
166 m_queue = other.m_queue;
167 m_jobs = std::move(other.m_jobs);
168 other.m_queue =
nullptr;
177 auto x = m_jobs.insert(m_queue->
Queue(job,
this));
183 bool IsEmpty()
const {
return m_jobs.empty(); }
187 std::set<Job::Handle> m_jobs;
Definition JobQueue.h:148
virtual void Order(Job *job)=0
virtual ~JobClient()
Definition JobQueue.h:152
virtual void RemoveJob(Job::Handle *handle)=0
Definition JobQueue.h:108
JobQueue(const JobQueue &)=delete
virtual Uint32 FinishJobs()=0
virtual Job::Handle Queue(Job *job, JobClient *client=nullptr)=0
JobQueue & operator=(const JobQueue &)=delete
virtual void Cancel(Job *job)=0
virtual ~JobQueue()
Definition JobQueue.h:113
Definition JobQueue.h:157
bool IsEmpty() const
Definition JobQueue.h:183
virtual void RemoveJob(Job::Handle *handle)
Definition JobQueue.h:181
JobSet(JobQueue *queue)
Definition JobQueue.h:159
virtual void Order(Job *job)
Definition JobQueue.h:175
JobSet & operator=(const JobSet &other)=delete
JobSet(JobSet &&other)
Definition JobQueue.h:161
JobSet & operator=(JobSet &&other)
Definition JobQueue.h:164
JobSet(const JobSet &)=delete
Job * GetJob() const
Definition JobQueue.h:54
Handle & operator=(const Handle &)=delete
Handle()
Definition JobQueue.h:41
bool operator<(const Handle &other) const
Definition JobQueue.h:56
Handle & operator=(Handle &&other)
Definition JobQueue.cpp:64
friend class AsyncJobQueue
Definition JobQueue.h:60
Handle(const Handle &)=delete
~Handle()
Definition JobQueue.cpp:83
bool HasJob() const
Definition JobQueue.h:53
virtual ~Job()
Definition JobQueue.cpp:16
friend class JobRunner
Definition JobQueue.h:91
Job()
Definition JobQueue.h:76
virtual void OnFinish()=0
Job & operator=(const Job &)=delete
friend class AsyncJobQueue
Definition JobQueue.h:89
virtual void OnCancel()
Definition JobQueue.h:86
Definition JobQueue.h:131
Uint32 RunJobs(Uint32 count=1)
Definition JobQueue.cpp:159
virtual ~SyncJobQueue()
Definition JobQueue.cpp:94
virtual Job::Handle Queue(Job *job, JobClient *client=nullptr) override
Definition JobQueue.cpp:103
virtual void Cancel(Job *job) override
Definition JobQueue.cpp:132
virtual Uint32 FinishJobs() override
Definition JobQueue.cpp:111
Definition TaskGraph.cpp:26
Definition TaskGraph.h:139