|
Boost Users : |
Subject: [Boost-users] How to pass parameters to manage_shared_memory.construct() in Boost.Interprocess
From: Cuneyt Taskiran (ctaskiran_at_[hidden])
Date: 2010-03-13 00:38:59
I've stared at the Boost.Interprocess documentation for hours but
still haven't been able to figure this out. In the doc, they have of
creating a vector in shared memory like so:
//Define an STL compatible allocator of ints that allocates from
the managed_shared_memory.
//This allocator will allow placing containers in the segment
typedef allocator<int, managed_shared_memory::segment_manager>
ShmemAllocator;
//Alias a vector that uses the previous STL-like allocator so that allocates
//its values from the segment
typedef vector<int, ShmemAllocator> MyVector;
int main(int argc, char *argv[])
{
//Create a new segment with given name and size
managed_shared_memory segment(create_only, "MySharedMemory", 65536);
//Initialize shared memory STL-compatible allocator
const ShmemAllocator alloc_inst (segment.get_segment_manager());
//Construct a vector named "MyVector" in shared memory with
argument alloc_inst
MyVector *myvector =
segment.construct<MyVector>("MyVector")(alloc_inst);
Now, I understand this. What I'm stuck is how to pass a second
parameter to `segment.construct()` to specify the number of elements.
The interprocess document gives the prototype for `construct()` as
MyType *ptr = managed_memory_segment.construct<MyType>("Name")
(par1, par2...);
but when I try
MyVector *myvector = segment.construct<MyVector>("MyVector")(100,
alloc_inst);
I get compilation errors.
My questions are:
1. Who actually gets passed the parameters `par1, par2` from
`segment.construct`, the constructor of the object, e.g. `vector`? My
understanding is that the template allocator parameter is being
passed. Is that correct?
2. How can I add another parameter, in addition to `alloc_inst` that
is required by the constructor of the object being created in shared
memory?
Thanks!
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