WinAPI callbacks and GC

Sean Kelly sean at invisibleduck.org
Mon May 6 16:03:58 PDT 2013


On May 2, 2013, at 6:17 AM, Regan Heath <regan at netmail.co.nz> wrote:

> On Wed, 01 May 2013 01:12:39 +0100, Sean Kelly <sean at invisibleduck.org> wrote:
> 
>> On Apr 23, 2013, at 2:21 PM, Jack Applegame <japplegame at 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.


More information about the Digitalmars-d-learn mailing list