Giriş
Şu satırı dahil ederiz.
Bu sınıf Windows'ta backend olarak basic_managed_windows_shared_memory sınıfını kullanıyor. System V işletim sisteminde ise backend olarak basic_managed_xsi_shared_memory sınıfını kullanıyor. Her iki sınıfın ortak noktaları az olduğu için shmid değerini dışarı veremiyor.
constructor
Belleğin bölük bölük kullanılmasına izin verir. Yaratmak için şöyle yaparız.
Yaratılan nesneye bir isim vermemiz gerekir. Şöyle yaparız.
İsim ile daha önce yaratılan nesneye erişim sağlar.
Şu satırı dahil ederiz.
#include <boost/interprocess/managed_shared_memory.hpp>
Bu sınıf ile managed_mapped_file sınıfı arayüz olarak çok benziyorlar.Bu sınıf Windows'ta backend olarak basic_managed_windows_shared_memory sınıfını kullanıyor. System V işletim sisteminde ise backend olarak basic_managed_xsi_shared_memory sınıfını kullanıyor. Her iki sınıfın ortak noktaları az olduğu için shmid değerini dışarı veremiyor.
constructor
Belleğin bölük bölük kullanılmasına izin verir. Yaratmak için şöyle yaparız.
//Create shared memory
managed_shared_memory segment (create_only,"MySharedMemory", 65536);
Varsa açar, yoksa yaratır. Şöyle yaparızmanaged_shared_memory segment (open_or_create,
"MySharedMemory", 65536);
Şöyle yaparız.boost::interprocess::permissions perm;
perm.set_unrestricted ()
managed_shared_memory segment(create_only_t(), "...", 42768, NULL, perm );
construct metoduYaratılan nesneye bir isim vermemiz gerekir. Şöyle yaparız.
segment.construct<MyType> ("Test") (0, 0.2);
Yaratılan nesneye bellek alanı da sağlamak gerekebilir.segment.construct<my_string>("Test")(
"Message to other process",
segment.get_segment_manager());
find metoduİsim ile daha önce yaratılan nesneye erişim sağlar.
std::pair<my_string * , size_t > p= mshm.find<my_string>("Test");
cout<< "got " << p.second << " strings " << endl;
cout<< "first string is->"<<p.first->c_str()<<endl;
find_or_construct metodu
Elimizde şöyle typdefler olsun
typedef int KeyType;
typedef boost::container::basic_string<..., ..., ... > MappedType;
typedef std::pair<KeyType, MappedType> ValueType;
typedef boost::interprocess::allocator<ValueType, ...> ShmAlloc;
typedef boost::unordered_map<KeyType, MappedType, ..., ..., ... > ShmHashMap;
Şöyle yaparız.ShmHashMap *hash_map = segment.find_or_construct<ShmHashMap>
(unique_instance)(segment.get_segment_manager());
Hiç yorum yok:
Yorum Gönder