Files
interprocess/doc/code/doc_offset_ptr.cpp
Ion Gaztañaga 18646362ed no message
[SVN r34286]
2006-06-12 17:39:55 +00:00

52 lines
1.4 KiB
C++

#include <boost/interprocess/detail/config_begin.hpp>
#include <boost/interprocess/detail/workaround.hpp>
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/offset_ptr.hpp>
using namespace boost::interprocess;
//Shared memory linked list node
struct list_node
{
offset_ptr<list_node> next;
int value;
};
int main ()
{
//Create shared memory
managed_shared_memory::remove("MySharedMemory");
managed_shared_memory segment(
create_only,
"MySharedMemory",//segment name
65536); //segment size in bytes
//Create linked list with 10 nodes in shared memory
offset_ptr<list_node> prev = 0, current, first;
int i;
for(i = 0; i < 10; ++i, prev = current){
current = static_cast<list_node*>(segment.allocate(sizeof(list_node)));
current->value = i;
current->next = 0;
if(!prev)
first = current;
else
prev->next = current;
}
//Communicate list to other processes
//. . .
//When done, destroy list
for(current = first; current; /**/){
prev = current;
current = current->next;
segment.deallocate(prev.get());
}
return 0;
}
#include <boost/interprocess/detail/config_end.hpp>