38 lines
819 B
C++
38 lines
819 B
C++
#pragma once
|
|
|
|
class Thread
|
|
{
|
|
public:
|
|
Thread(const char* szThreadNick);
|
|
virtual ~Thread();
|
|
|
|
bool Start();
|
|
bool Terminate( DWORD nExitCode );
|
|
bool WaitForTerminate( DWORD nTimeout = INFINITE );
|
|
DWORD_PTR SetThreadAffinityMask( DWORD dwMask );
|
|
|
|
protected:
|
|
virtual void Run() = 0;
|
|
|
|
HANDLE m_hThreadHandle;
|
|
unsigned int m_nThreadID;
|
|
bool m_bRunning;
|
|
char m_szThreadNick[128];
|
|
|
|
private:
|
|
|
|
static unsigned int WINAPI _Runner( void * pParam );
|
|
static void SetThreadName( DWORD dwThreadID, const char* szThreadName);
|
|
|
|
private:
|
|
|
|
//
|
|
typedef struct tagTHREADNAME_INFO
|
|
{
|
|
DWORD dwType; // must be 0x1000
|
|
LPCSTR szName; // pointer to name (in user addr space)
|
|
DWORD dwThreadID; // thread ID (-1=caller thread)
|
|
DWORD dwFlags; // reserved for future use, must be zero
|
|
} THREADNAME_INFO;
|
|
|
|
};
|