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