Function core.thread.threadbase.thread_detachThis
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.
extern(C) void thread_detachThis() nothrow @nogc;
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()
See Also
Authors
Sean Kelly, Walter Bright, Alex Rønne Petersen, Martin Nowak
License
Distributed under the Boost Software License 1.0. (See accompanying file LICENSE)