38 lines
1.7 KiB
C++
38 lines
1.7 KiB
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;
|
||
|
||
};
|