Problem creating a circular buffer in shared memory using Boost
I am trying to create a circular buffer in shared memory using Boost circular_buffer
and Interprocess libraries. I compiled and ran the the example given in the Interprocess documentation for creating a vector in shared memory with no problem. However, when I modify it to use the Boost circular_buffer as:
int main(int argc, char *argv[])
{
managed_shared开发者_如何转开发_memory segment(create_only, "MySharedMemory", 65536);
const ShmemAllocator alloc_inst (segment.get_segment_manager());
MyCircBuffer *myCircBuf = segment.construct<MyCircBuffer>("MyCircBuffer")(alloc_inst);
return 0;
}
I get a compilation error (caused by segment.construct()
). Any idea what I am doing wrong? Is it because circular_buffer
is not one of the containers listed in /boost/interprocess/containers
, i.e. it's not compatible with Interprocess?
Thanks,
C
I asked the same question on the boost user forum and the solution that was suggested was to use -DBOOST_CB_DISABLE_DEBUG or -DNDEBUG flags, since circular_buffer
relies on raw pointers for debug support.
Any other suggestions?
精彩评论