#pragma once class CThread { public: #ifdef _WIN32 typedef uint32_t(*CTHREAD_START_ROUTINE)(void * lpThreadParameter); #else typedef void *(*CTHREAD_START_ROUTINE)(void *); #endif CThread(CTHREAD_START_ROUTINE lpStartAddress); ~CThread(); bool Start(void * lpThreadParameter); inline uint32_t ThreadID(void) const { return m_threadID; } bool isRunning(void) const; void Terminate(void); static uint32_t GetCurrentThreadId(void); private: CThread(void); // Disable default constructor CThread(const CThread&); // Disable copy constructor CThread& operator=(const CThread&); // Disable assignment static void * ThreadWrapper (CThread * _this); CTHREAD_START_ROUTINE m_StartAddress; void * m_lpThreadParameter; void * m_thread; uint32_t m_threadID; #ifndef _WIN32 bool m_running; #endif };