DConf 2013 Day 1 Talk 6: Concurrent Garbage Collection for D by Leandro Lucarella
Diggory
diggsey at googlemail.com
Mon May 20 15:52:32 PDT 2013
On Monday, 20 May 2013 at 13:55:05 UTC, Regan Heath wrote:
> On Mon, 20 May 2013 13:50:25 +0100, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> wrote:
>
>> On reddit:
>> http://www.reddit.com/r/programming/comments/1eovfu/dconf_2013_day_1_talk_6_concurrent_garbage/
>
> This may be the Windows Copy On Write feature mentioned in the
> Q&A at the end:
> http://support.microsoft.com/kb/103858
>
> .. but it's not clear to me how useful this is for fork
> emulation or similar.
>
> R
Fork isn't needed at all really in the technique described, this
is all that's needed:
- Map a copy of the memory using copy-on-write
- Run some code concurrently
It just happens that fork does both of these things, but you can
equally well do the two things using separate calls.
In fact you should be able to avoid the deadlock issue by not
using fork but just remapping some shared memory using copy on
write. The GC can exist in a separate thread which pauses itself
after every run. To run the GC it's then just a case of:
- stop the world
- copy registers to stack
- remap shared memory using COW
- resume the world
- resume the GC thread
And that would work on all modern OSes, plus you don't have the
overhead of creating a new process or even a new thread. Also
immutable memory doesn't need to be mapped, the GC thread can
access it directly.
More information about the Digitalmars-d-announce
mailing list