
On Tue, Nov 06, 2012 at 12:50:23PM -0600, david.hagood@gmail.com wrote:
Has any thought been given to allowing a name to be set on a boost::thread, such that (if the underlying implementation supports it) that name would show up in things like top and ps?
In Linux, you can name a thread via the prctl() call and it will show up in top - dandy for debugging which of the bazillion threads in my app has decided to suck up all the CPU.
I don't know if Windows supports such a call, and IMHO it would be acceptable if the call did nothing in such a case.
Ideally, I'd want to see it as a property, something like:
void boost::thread::set_name(std::string name) std::string boost::thread::get_name() const;
On VC++, the following names a thread. const DWORD MS_VC_EXCEPTION=0x406D1388; inline void SetThreadName(DWORD dwThreadID, char const* threadName) { #pragma pack(push,8) 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; #pragma pack(pop) THREADNAME_INFO info; info.dwType = 0x1000; info.szName = threadName; info.dwThreadID = dwThreadID; info.dwFlags = 0; __try { RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info ); } __except(EXCEPTION_EXECUTE_HANDLER) { } } -- Lars Viklund | zao@acc.umu.se