WinAPI callbacks and GC

Regan Heath regan at netmail.co.nz
Tue May 7 06:40:49 PDT 2013


On Tue, 07 May 2013 00:03:58 +0100, Sean Kelly <sean at invisibleduck.org>  
wrote:

> 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.

Excellent.  Might be nice to see some of these details in the docs :p  ..  
or even just a "will block if collection is in progress".

R

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Digitalmars-d-learn mailing list