GC interuptable?

chrisj a at b.c
Sat Dec 16 07:20:39 PST 2006


"chrisj" <a at b.c> wrote in message news:em12ih$6lk$1 at digitaldaemon.com...
>
> "Sean Kelly" <sean at f4.ca> wrote in message 
> news:elvfpr$1l8j$1 at digitaldaemon.com...
>> chrisj wrote:
>>> Can a low level thread interupt the GC and run ok as long as it doesnt 
>>> use any GC related features? (Only referances memory not from the GC 
>>> pool and such like)
>>
>> Are you asking whether it's safe to suspend the GC during a cleanup and 
>> then go do something else?  If so, then my answer is a very tenative 
>> "yes."  The GC suspends all threads it knows about during a collection 
>> (ie. all instances of std.thread.Thread) so each of these threads is 
>> frozen at some point of execution.  They could own mutexes, etc.  So any 
>> operation that may involve shared state information risks deadlocking the 
>> app.  In short, yes it's possible but you need to be very careful :-)
>
> Say you have a soundcard in/out or somthing like.. which gets called via a 
> callback from the driver or from windows, or even from another 
> application. So the thread is not one actualy created by the D app... can 
> the callback run as long as it doesnt use any features that will affect 
> the GCed memory pool? Actually from what you say above it seems the GC 
> cannot stop a

Sorry should read the "GC cannot stop one that the D RTL didnt create"

> callback from a thread it didnt create.. so the only option would be to 
> make sure such a callback didnt affect the GC?
>
> thanks,
>
> chris
> 





More information about the Digitalmars-d mailing list