** Non-Boost ** STL alokator dla pamięci współdzielonej

Z powodu polityki, w której pracuję, nie mogę użyć wersji Boost nowszej niż 1.33.1 i nie mogę użyć wersji GCC nowszej niż 4.1.2. Tak, to śmieci, ale nic nie mogę na to poradzić. Boost 1.33.1 nie zawiera biblioteki międzyprocesowej.

Mimo to jeden z moich projektów wymaga umieszczeniastd::map (lub bardziej prawdopodobne, żestd::unordered_map) do pamięci współdzielonej. Jest on zapisywany / modyfikowany JEDEN CZAS, gdy proces jest ładowany przez pojedynczy proces („serwer”) i odczytywany przez wiele innych procesów. Nie zrobiłem wcześniej wspólnej pamięci IPC, więc jest to dla mnie całkiem nowe terytorium. Przyjrzałem sięshmget() ale wydaje się, że nie mogę ciągle używać tego samego klucza pamięci współdzielonej do przydzielania (jak przypuszczam, byłoby to konieczne w przypadku alokatorów kontenerów STL).

Czy są jakieś inneNON-BOOST Alokatory STL, które korzystają z pamięci współdzielonej?

EDYTOWAĆ: Toma zostało zrobione wcześniej.Dr Dobbs miał artykuł o tym, jak to zrobić dokładnie w 2003 rokui zacząłem używać go jako odniesienia. Jednak aukcje kodu są niekompletne, a linki do nich przekierowują na stronę główną.

EDYTUJ EDYCJĘ: Jedynym powodem, dla którego nie zapisuję ponownie procesu Boost.Interprocess, jest ilość zaangażowanego kodu. Zastanawiałem się tylko, czy istnieje coś stosunkowo krótkiego i zwięzłego specjalnie dla pamięci współdzielonej POSIX, którą mógłbym ponownie napisać od podstaw, ponieważ transfery danych między sieciami również podlegają wielodniowemu procesowi zatwierdzania ...

questionAnswers(2)

yourAnswerToTheQuestion