struct THREADNAME_INFO
{
DWORD dwType;
LPCSTR szName;
DWORD dwThreadID;
DWORD dwFlags;
};
#define MS_VC_EXCEPTION 0x406D1388
void IThread::SetName(const char* name)
{
if (IsDebuggerPresent())
{
THREADNAME_INFO info;
info.dwType = 0x1000;
info.dwThreadID = GetCurrentThreadId();
info.szName = name;
info.dwFlags = 0;
__try
{
RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(DWORD), (ULONG_PTR*)&info);
}
__except(EXCEPTION_CONTINUE_EXECUTION)
{
}
}
}
今天在用vs debug项目代码时注意到了线程名称的设置方法,仅限Windows。