8 Temmuz 2016 Cuma

managed_mapped_file Sınıfı

Giriş
Ş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 metodu
Dosyada 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