Remove the need for a debug build or debugger when setting Win32 thread names.

This commit is contained in:
Mike Naquin 2013-05-20 12:38:51 -05:00
parent 29a9a2cf1d
commit ee77d05ab5

View File

@ -40,7 +40,7 @@
#include <process.h> #include <process.h>
#if defined(_DEBUG) && defined(POCO_WIN32_DEBUGGER_THREAD_NAMES) #if defined(POCO_WIN32_DEBUGGER_THREAD_NAMES)
namespace namespace
@ -63,22 +63,19 @@ namespace
void setThreadName(DWORD dwThreadID, const char* threadName) void setThreadName(DWORD dwThreadID, const char* threadName)
{ {
if (IsDebuggerPresent()) THREADNAME_INFO info;
{ info.dwType = 0x1000;
THREADNAME_INFO info; info.szName = threadName;
info.dwType = 0x1000; info.dwThreadID = dwThreadID;
info.szName = threadName; info.dwFlags = 0;
info.dwThreadID = dwThreadID;
info.dwFlags = 0; __try
{
__try RaiseException(MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info);
{ }
RaiseException(MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info); __except (EXCEPTION_CONTINUE_EXECUTION)
} {
__except (EXCEPTION_CONTINUE_EXECUTION) }
{
}
}
} }
} }
@ -237,7 +234,7 @@ unsigned __stdcall ThreadImpl::runnableEntry(void* pThread)
#endif #endif
{ {
_currentThreadHolder.set(reinterpret_cast<ThreadImpl*>(pThread)); _currentThreadHolder.set(reinterpret_cast<ThreadImpl*>(pThread));
#if defined(_DEBUG) && defined(POCO_WIN32_DEBUGGER_THREAD_NAMES) #if defined(POCO_WIN32_DEBUGGER_THREAD_NAMES)
setThreadName(-1, reinterpret_cast<Thread*>(pThread)->getName().c_str()); setThreadName(-1, reinterpret_cast<Thread*>(pThread)->getName().c_str());
#endif #endif
try try
@ -267,7 +264,7 @@ unsigned __stdcall ThreadImpl::callableEntry(void* pThread)
#endif #endif
{ {
_currentThreadHolder.set(reinterpret_cast<ThreadImpl*>(pThread)); _currentThreadHolder.set(reinterpret_cast<ThreadImpl*>(pThread));
#if defined(_DEBUG) && defined(POCO_WIN32_DEBUGGER_THREAD_NAMES) #if defined(POCO_WIN32_DEBUGGER_THREAD_NAMES)
setThreadName(-1, reinterpret_cast<Thread*>(pThread)->getName().c_str()); setThreadName(-1, reinterpret_cast<Thread*>(pThread)->getName().c_str());
#endif #endif
try try