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