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