thread_detachByAddr
void thread_detachByAddr(ThreadID addr) extern(C)Deregisters the given thread from use with the runtime. If this routine is called for a thread which is not registered, the result is undefined.
Once the thread is removed from the runtime, it must not use the GC because it does not participate in the Stop-The-World mechanisms. With the default GC, that has a global lock, this might not cause races, but in GCs with regional locks, it definitely can cause races.
NOTE: This routine does not run thread-local static destructors when called. If full functionality as a D thread is desired, the following function must be called by the detached thread before calling this function, particularly if the thread is being detached at some indeterminate time before program termination:
extern(C) void rt_moduleTlsDtor();
This also does not call the GC thread cleanup routine. After running module dtors, it is recommended to call (from the thread itself) gc_getProxy().cleanupThread(Thread.getThis());