Question about D, garbage collection and fork()

Steven Schveighoffer schveiguy at yahoo.com
Thu Mar 10 04:24:56 PST 2011


On Wed, 09 Mar 2011 17:56:54 -0500, Jerry Quinn <jlquinn at optonline.net>  
wrote:

> Where I work, we find it very useful to start a process, load data, then  
> fork() to parallelize.  Our data is large, such that we'd run out of  
> memory  trying to run a complete copy on each core.  Once the process is  
> loaded, we don't need that much writable memory, so fork is appealing to  
> share the loaded pages.  It's possible to use mmap for some of the data,  
> but inconvenient for other data, even though it's read-only at runtime.
>
> So here's my question:  In D, if I create a lot of data in the  
> garbage-collected heap that will be read-only, then fork the process,  
> will I get the benefit of the operating system's copy-on-write and only  
> use a small amount of additional memory per process?

Do you know what causes the OS to regard that memory as read-only?  Since  
fork() is a C system call, and D gets its heap memory the same as any  
other unix process (brk()), I can't see why it wouldn't work.  As long as  
you do the same thing you do in C, I think it will work.

-Steve


More information about the Digitalmars-d mailing list