Thread-local GC?
Sean Kelly via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jul 10 09:20:42 PDT 2014
On Thursday, 10 July 2014 at 02:51:05 UTC, logicchains wrote:
> I was wondering if thread-local GC had been considered an
> option for making D's GC work better in threaded code? Erlang
> has this (well, process-local GC, which is closer to
> fibre-local in D terms) and it seems to work okay, although I
> don't think Erlang allows shared memory between processes.
>
> If this were possible, it would be particularly useful if it
> could be combined with nogc to allow the spawning of nogc
> threads. These could be used for latency-sensitive work, with
> the guarantee that work done in a nogc thread would never be
> paused by garbage collection done in other threads.
I really like this idea. It would neatly address my issues with
a long-standing pull request for adding provisions to core.thread
for creating threads that should not be blocked by the GC on
collections. Just add detection in the Thread ctors for the
@nogc label and set the appropriate internal flag.
It's still kind of a veneer over potentially risky code, since
@nogc code can manipulate references to data in the GC and so be
the sole owner of data that will then vanish on the next
collection, but it seems a good way to document what's desired
and enforce some degree of correctness.
More information about the Digitalmars-d
mailing list