在windows平台下debug模式有效

#ifdef WIN32
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;
#endif
void SetThreadName(const char* format, ...)
{
// This isn't supported on *nix
va_list ap;
va_start(ap, format);
#ifdef WIN32
char thread_name[200];
vsnprintf(thread_name, 200, format, ap);
THREADNAME_INFO info;
info.dwType = 0×1000;
info.dwThreadID = GetCurrentThreadId();
info.dwFlags = 0;
info.szName = thread_name;
__try
{
#ifdef _WIN64
RaiseException(0×406D1388, 0, sizeof(info)/sizeof(DWORD), (ULONG_PTR*)&info);
#else
RaiseException(0×406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info);
#endif
}
__except(EXCEPTION_CONTINUE_EXECUTION)
{
}
#endif
va_end(ap);
}

本文相关评论 - 1条评论都没有呢

目前还没有评论.