Finalizing D2

Lionello Lunesu lio at lunesu.remove.com
Mon May 25 04:17:34 PDT 2009


Andrei Alexandrescu wrote:
> grauzone wrote:
>>>>> * std.mmfile: integrate with the garbage collector. It should be 
>>>>> there.
>>>>
>>>> Why should the GC know about it?
>>
>> To add: in all sane situations, the mmaped region won't contain any 
>> pointers, and the GC doesn't have to scan it. Allocating address space 
>> is already done by the OS. Freeing the mmaped region is not the GC's 
>> responsibility, but can be left to finalizers/destructors.
>>
>>> Because the only way to make memory-mapped files safe is to have the 
>>> GC handle them.
>>
>> Care to explain?
> 
> mmhandle h = mapFile("test.txt");
> char[] x = cast(char[]) h.ptr;
> h.unmapFile;
> 
> Any attempt to use x will crash the program. So it's the gc who needs to 
> unmap files when they are no longer referenced.

Memory mapped files are unlike memory in that they keep the actual 
mapped file locked. There must be a deterministic way to unlock those 
files.

L.



More information about the Digitalmars-d mailing list