On Wed, 21 Apr 2010 17:10:00 +0200, Torsten Förtsch <torsten.foert...@gmx.net> wrote:

On Wednesday 21 April 2010 16:59:01 Perrin Harkins wrote:
In both cases you have the same drawback: it's impossible to read
anything from the shared data without copying the data you read into
perl variables.
[...]

no, MMapDB creates read-only variables that reference the mmapped block. It manipulates SvPVX directly:

SvPV_set(sv, pointer);
SvLEN_set(sv, 0); # this makes sure perl won't try to free() the space
[...]
You can then pass around references to that variable and nothing will be
copied.

Cool!

So, if I understand correctly: using something like Cache::FastMmap
creates copy of your strings/values/... in your process memory.
See the "fc_read" function. Is this correct?

http://cpansearch.perl.org/src/ROBM/Cache-FastMmap-1.35/Cache-FastMmap-CImpl/CImpl.xs

I guess pretty much anything else works that way, not just Cache::FastMmap.

--
Cosimo

Reply via email to