Giriş
Şu satırı dahil ederiz.
Constructor
Yeni dosya yaratmak için şöyle yaparız.
Dosyada bir liste olduğunu varsayalım.
Şu satırı dahil ederiz.
#include <boost/interprocess/managed_mapped_file.hpp>
Bu sınıf ile managed_shared_memory sınıfı arayüz olarak çok benziyorlar.Constructor
Yeni dosya yaratmak için şöyle yaparız.
namespace bip = boost::interprocess;
namespace shared {
using segment = bip::managed_mapped_file;
...
}
shared::segment segment (bip::open_or_create, "test.dat", 10u<<20); //10 megabyte
Mevcut dosyayı okumak için şöyle yaparız.shared::segment segment (bip::open_only, "test.dat"); // read it back
find_or_construct metoduDosyada bir liste olduğunu varsayalım.
typedef int my_big_struct;
namespace shared {
template <typename T> using alloc = bip::allocator<T, manager>;
template <typename T> using list = boost::interprocess::list<T, alloc<T> >;
}
using List = shared::list<my_big_struct>;
using ItList = shared::list<List::const_iterator>;
Şöyle yaparız.auto& a = *segment.find_or_construct<List>("a")(segment.get_segment_manager());
Bu listeye yeni değerler atayabiliriz. Şöyle yaparız.a.assign({3,2,7,4,9});
Listeyi iterator ile de dolaşabiliriz. Şöyle yaparız.auto& a = *segment.find_or_construct<ItList>("ab")(segment.get_segment_manager());
for (auto iterator : ab) {
my_big_struct const* pointer = &*iterator;
...
}
Hiç yorum yok:
Yorum Gönder