19#define _WIN32_WINNT 0x0400
26#pragma warning ( push )
27#pragma warning ( disable : 4201 )
29#pragma warning ( pop )
35 assert(strlen(thread_name) <
sizeof(
ThreadName) - 1);
49void __cdecl ThreadClass::Internal_Thread_Function(
void* params)
61 } __except(tc->
ExceptionHandler(GetExceptionCode(), GetExceptionInformation())) {};
84 handle=_beginthread(&Internal_Thread_Function,0,
this);
85 SetThreadPriority((HANDLE)handle,THREAD_PRIORITY_NORMAL+thread_priority);
96 thread_priority=priority;
97 if (handle) SetThreadPriority((HANDLE)handle,THREAD_PRIORITY_NORMAL+thread_priority);
111 int res=TerminateThread((HANDLE)handle,0);
147 return GetCurrentThreadId();
ThreadClass(const char *name=NULL, ExceptionHandlerType exception_handler=NULL)
virtual void Thread_Function()=0
void Set_Priority(int priority)
static void Switch_Thread()
int(* ExceptionHandlerType)(int exception_code, struct _EXCEPTION_POINTERS *e_info)
static void Sleep_Ms(unsigned ms=0)
static unsigned _Get_Current_Thread_ID()
ExceptionHandlerType ExceptionHandler
void Stop(unsigned ms=3000)