DragonNest/Common/NxServerLib/include/NxThread.h
2024-12-19 09:48:26 +08:00

40 lines
760 B
C++

#pragma once
class NxThread
{
public:
NxThread(const char* szThreadNick);
virtual ~NxThread();
bool Start();
bool Terminate( DWORD nExitCode );
bool WaitForTerminate( DWORD nTimeout = INFINITE );
protected:
virtual void Run() = 0;
HANDLE m_hThreadHandle;
DWORD m_nThreadID;
bool m_bRunning;
char m_szThreadNick[128];
private:
static DWORD WINAPI _Runner( LPVOID 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;
};