Unfortunately, there's no standard way to know if a particular thread is still alive or not. For example, on FreeBSD a thread runs within the parent process, while on Linux a thread has is just a process that happens to share its memory space with another process. The only way I've really found of doing this is shared memory and processes, where it is Posixly positive that you can detect that a process has died.
Threads are evil.
They are evil, wicked, nasty things. They are evil, wicked nasty things because there's no easy way to free the resources that a thread has allocated if the thread dies or is killed, unless you do some very tedious book-keeping.