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