3#ifndef ENGINE_SHARED_JOBS_H
4#define ENGINE_SHARED_JOBS_H
70 virtual void Run() = 0;
119 virtual bool Abort();
CLock m_Lock
Definition jobs.h:146
void Add(std::shared_ptr< IJob > pJob) REQUIRES(!m_Lock)
Definition jobs.cpp:213
std::shared_ptr< IJob > m_pFirstJob GUARDED_BY(m_Lock)
static void WorkerThread(void *pUser) NO_THREAD_SAFETY_ANALYSIS
Definition jobs.cpp:63
std::shared_ptr< IJob > m_pLastJob GUARDED_BY(m_Lock)
void RunLoop() NO_THREAD_SAFETY_ANALYSIS
Definition jobs.cpp:68
void Shutdown() REQUIRES(!m_Lock) REQUIRES(!m_LockRunning)
Definition jobs.cpp:153
CJobPool()
Definition jobs.cpp:50
SEMAPHORE m_Semaphore
Definition jobs.h:147
void Init(int NumThreads) REQUIRES(!m_Lock)
Definition jobs.cpp:133
std::deque< std::shared_ptr< IJob > > m_RunningJobs GUARDED_BY(m_LockRunning)
std::vector< void * > m_vpThreads
Definition jobs.h:143
std::atomic< bool > m_Shutdown
Definition jobs.h:144
CLock m_LockRunning
Definition jobs.h:151
bool IsAbortable() const
Definition jobs.cpp:45
bool Done() const
Definition jobs.cpp:25
EJobState
Definition jobs.h:36
@ STATE_QUEUED
Definition jobs.h:40
@ STATE_RUNNING
Definition jobs.h:45
@ STATE_DONE
Definition jobs.h:50
@ STATE_ABORTED
Definition jobs.h:58
friend class CJobPool
Definition jobs.h:29
void Abortable(bool Abortable)
Definition jobs.cpp:40
EJobState State() const
Definition jobs.cpp:20
IJob()
Definition jobs.cpp:11
virtual bool Abort()
Definition jobs.cpp:31
std::atomic< bool > m_Abortable
Definition jobs.h:64
std::atomic< EJobState > m_State
Definition jobs.h:63
std::shared_ptr< IJob > m_pNext
Definition jobs.h:62
IJob(const IJob &Other)=delete
IJob & operator=(const IJob &Other)=delete
sem_t SEMAPHORE
Definition sphore.h:33
#define REQUIRES(...)
Definition lock.h:34
#define NO_THREAD_SAFETY_ANALYSIS
Definition lock.h:73