Boost logo

Boost :

Subject: Re: [boost] boost::bimap and boost::interprocess
From: Matias Capeletto (matias.capeletto_at_[hidden])
Date: 2013-01-25 05:20:48


Hi Joel,

On Thu, Jan 24, 2013 at 10:54 PM, Joel Young <jdy_at_[hidden]> wrote:
> I've been trying to get boost::bimap to work in a
> boost::interprocess::managed_mapped_file.
>
> The other program (bimap.c++) does exactly the same thing, but when
> run the second time it crashes. My guess is because bimap isn't quite
> interprocess compatible---that is, it isn't using the provided
> allocator for EVERYTHING.

That is not the problem in this case, Bimap is just given your
allocator to MultiIndex.
The issue is that the map views (left, right and relation set) are
initialized with a reference to the multiindex core in construction
time... when interprocess read it from memory the second time this
references are garbage. A direct solution will be to use interprocess
offset_ptr, but that will have a performance hit so I will have to
rethink how the views are accessing the core, probably using CRTP.

> Any suggestions? Any chance of bimap being made interprocess compatible?

Totally, but I am right now quite deep in a complete rewrite of the
lib to improve compilation times and error messages (that because of
the use of the internal ContainerAdaptor, that it is being eliminated,
were unreadable), and to have a better base to add the new C++11
goodies. I will like to focus on this first, and I will do the changes
that are needed to make the lib work with Interprocess allocators in
the meanwhile.
Could you issue a ticket so we do not forget?

Thanks for the report! Sorry it is not currently working with interprocess :(
Best regards
Matias


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk