2016-04-17 19:34:47 +00:00
|
|
|
#pragma once
|
2018-11-18 01:06:02 +00:00
|
|
|
#include <Common\stdtypes.h>
|
2016-04-17 19:34:47 +00:00
|
|
|
|
|
|
|
class CThread
|
|
|
|
{
|
|
|
|
public:
|
2016-04-28 07:34:09 +00:00
|
|
|
#ifdef _WIN32
|
2016-05-01 02:42:34 +00:00
|
|
|
typedef uint32_t(*CTHREAD_START_ROUTINE)(void * lpThreadParameter);
|
2016-04-28 07:34:09 +00:00
|
|
|
#else
|
|
|
|
typedef void *(*CTHREAD_START_ROUTINE)(void *);
|
|
|
|
#endif
|
2016-04-17 19:34:47 +00:00
|
|
|
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;
|
2016-04-28 07:34:09 +00:00
|
|
|
#ifndef _WIN32
|
|
|
|
bool m_running;
|
|
|
|
#endif
|
2016-04-17 19:34:47 +00:00
|
|
|
};
|