thread_detachThis

fnvoid thread_detachThis() extern(C) nothrow @nogc

Deregisters the calling 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 before thread_detachThis, 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 gc_getProxy().cleanupThread(Thread.getThis());

See Also