This is the mail archive of the
mailing list for the pthreas-win32 project.
Re: Accessing Windows thread id
- From: Ross Johnson <Ross dot Johnson at homemail dot com dot au>
- To: gmx <onsager at gmx dot net>
- Cc: pthreads-win32 at sourceware dot org
- Date: Sun, 27 May 2007 00:20:48 +1000
- Subject: Re: Accessing Windows thread id
- References: <email@example.com>
Michael Bieber wrote:
@listNot nicely but otherwise, yes.
I would like exploit the technique, described here:
in order to help my Visual Studio debugger with some more expressive
Unfortunately, this is relying on a thread id not being public
accessible for pthreads_win32 clients (It is the last argument to
_beginthreadex, after that call hidden inside the non-public
ptw32_thread_t structure). Windows GetThreadId is no help here, because
it isn't defined for Win XP. Even GetCurrentId is not entirely what I
would like, because the call to SetThreadName (cf. URL above) doesn't
come from the calling thread in my case.
So, is there a way to get the Windows thread id in a way similar to
pthread_getw32threadhandle_np for a handle?
As you've found, the win32 thread ID returned by the last arg of
_beginthreadex() is stored at offset zero in the opaque pthw32_thread_t_
struct, which is pointed to by the first element (offset zero) of the
pthread_t struct, a pointer to which is the first arg passed to
pthread_create(). So the code below should get you close if not all the
w32threadID = (DWORD) ((void *)tid);
I'll add another function to the library to return this nicely - called,