Boost managed shared memory erstes Element der Map im Client
-
Hallo um nicht eine neuen Thread heir mien problem:
Ich habe mit boost ein shared map erstellt nun will auf das erste element dieser im Client zugreifen. Die Veispiele hab ich schon durch aber komm inicht drauf.
server
typedef int KeyType; typedef package MappedType; typedef std::pair<int, package> ValueType; typedef boost::interprocess::allocator<ValueType, managed_shared_memory::segment_manager> ShmAllocator; typedef boost::interprocess::map<KeyType, MappedType, std::less<KeyType>, ShmAllocator> packageMap; boost::interprocess::shared_memory_object::remove("shared_memory"); boost::interprocess::managed_shared_memory managed_shm(boost::interprocess::create_only, "shared_memory", 5120); ShmAllocator alloc_inst (managed_shm.get_segment_manager()); packageMap *myPackageMap = managed_shm.construct<packageMap>("Pack")(std::less<int>(),alloc_inst); //////////////////////////////////////////////////////////////////////////////////////////////// for(int i = 0; i < 6; ++i) { myPackageMap->insert(std::pair<int, package>(i, temp_test_pack)); } packageMap::iterator it; for (it = myPackageMap->begin(); it != myPackageMap->end(); it++) { cout << it->first << endl; //cout << it->second << endl; cout << "LIID" <<it->second.LIID<< endl; }Hier geht die ausgabe nun will ich im Client die ausgabe machen dazu folgender Code
try { typedef int KeyType; typedef package MappedType; typedef std::pair<int, package> ValueType; typedef boost::interprocess::allocator<ValueType, managed_shared_memory::segment_manager> ShmAllocator; typedef boost::interprocess::map<KeyType, MappedType, std::less<KeyType>, ShmAllocator> packageMap; boost::interprocess::managed_shared_memory managed_shm(boost::interprocess::open_only, "shared_memory"); ShmAllocator alloc_inst (managed_shm.get_segment_manager()); packageMap *myPackageMap = //steigt aus weil objekt schon verhanden. // benötigt zeiger oder ähnliches auf erstes Element der schon bestehtenden Map. managed_shm.construct<packageMap> ("Pack")(std::less<int>(),alloc_inst); packageMap::iterator it; for (it = myPackageMap->begin(); it != myPackageMap->end(); it++) { cout << it->first << endl; //cout << it->second << endl; cout << "LIID" <<it->second.LIID<< endl; } }Weiß jemand was ich dem zeiger packageMap *myPackageMap = zuweisen muß damit es funktioniert?
-
Guck Dir die Beispiele an in der Boost Doku oder hier:
http://www.highscore.de/cpp/boost/
-
das hab ich schon.
Mir ist nur leider nicht klar wie das mit der .find methode funktioniert in meinem Fall.
Bzw. wie ich bei einer leeren Liste auf den "anfang" kommeWäre cool wenn mir vllt doch jemand helfen könnte, ich beiß mir heute schon den ganzen tag die Zähne aus und komme nicht weiter.
-