Boost logo

Boost Users :

From: Jan Suchý (zuchy_at_[hidden])
Date: 2008-05-30 10:32:23


Hallo,
I have problem when using interprocess package from boost lib.

I would like to have map object in memory.

I created example files for creating and reading this object from shared memory.
http://www.boost.org/doc/libs/1_35_0/doc/html/interprocess/quick_guide.html#interprocess.quick_guide.qg_interprocess_map
It is working ok.

Now, I want to have library, where i want to find previously created shared segment and read it more-times.
But I do not want to open it on every runQ function call.
I need to open this segment only once and use it more-times when runQ in lib is called.

I tried this:

#include ....

managed_shared_memory segment;

int init()
{
        managed_shared_memory localsegment(open_only, "MySharedMemory");
        segment = localsegment;
}

int runQ()
{
        mymap = segment.find<MyMap>("MyMap").first;

        work with mymap....
}

But the declaration of "managed_shared_memory segment" raise error when compiling:

/usr/local/include/boost-1_35/boost/interprocess/managed_shared_memory.hpp:61: error: ‘boost::interprocess::basic_managed_shared_memory<CharType, MemoryAlgorithm, IndexType>::basic_managed_shared_memory() [with CharType = char, AllocationAlgorithm = boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void>, 0u>, IndexType = boost::interprocess::iset_index]’ is private
xqtrans.cpp:261: error: within this context

How can use and assign segment globaly in my lib??

Thank you very much for any idea :-)

Jan Suchy


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net