On May 2, 2013, at 6:17 AM, Regan Heath <re...@netmail.co.nz> wrote: > On Wed, 01 May 2013 01:12:39 +0100, Sean Kelly <s...@invisibleduck.org> wrote: > >> On Apr 23, 2013, at 2:21 PM, Jack Applegame <jappleg...@gmail.com> wrote: >>> >>> According WinAPI documentation, CtrlHandler will be called in new >>> additional thread. Is it safe to allocate GC memory in NOT Phobos threads? >>> If not, how to make it safe? I'm trying call thread_attachThis() at the >>> beginning of CtrlHandler fucntion, but it doesn't compile because >>> thread_attachThis() is not no throw. >> >> >> thread_attachThis should probably just be labeled nothrow. I don't think >> there's anything in that function that can throw an Exception. > > That makes it callable.. but did you see my post about the various timing > issues with using this in a non-GC thread (potentially while the GC is > already collecting - or similar).
The GC holds a lock on the global thread list while collecting, so it shouldn't be possible for thread_attachThis to register a thread when this is happening. In fact, thread_attachThis even temporarily disables the GC, and since this operation is protected by the GC lock, it's blocked there as well.