I believe the current implementation simply increments a "next tid" counter, rather than re-using old tids. (I'd argue that this is desirable.) For detached threads, there isn't really a way to figure out if the thread has been internally reclaimed.
Thread::Running ? ;-)
http://search.cpan.org/~elizabeth/Thread-Running-0.04/lib/Thread/Running.pm
Liz