On 20 April 2014 14:33, via Digitalmars-d <digitalmars-d@puremagic.com>wrote:
> On Sunday, 20 April 2014 at 00:59:26 UTC, Manu via Digitalmars-d wrote: > >> Interpretation: this struct and any data directly reachable from it is >>> guaranteed to not be GC allocated. Then a precise collector could avoid >>> scanning those and pointers to them. >>> >> >> Why wouldn't precise GC be able to do this anyway? It already has data >> about everything it scans. It can easily produce a 'don't bother scanning >> this' bit at the start of that data without programmer assistance? >> > > It doesn't know what can be reached through a node in a graph. It doesn't > know what is on the GC heap. > > > In a visual realtime app, the GC will only be acceptable when it will not >> interrupt for more than 1ms or so (and I consider that quite generous, I'd >> be more comfortable with < 500µs). Otherwise you'll lose frames anyway; if >> > > No, because the @nogc thread will not be interrupted. > > Think MVC: the model is under GC, the view/controller is under @nogc. > I don't really see why a proposed @nogc thread wouldn't hold references to GC allocated objects... what would such a thread do if it didn't have any data to work with? @nogc just says the thread won't allocate, it can still be holding all the references it likes, and still needs to be scanned.