zasobów udostępnionych od boost :: Interprocess (współdzielonej pamięci, etc) wymagają, aby zapewnić niezbędną synchronizację. Dzieje się tak dlatego, że możesz nie wymagać synchronizacji, a zazwyczaj jest to dość droga operacja.
Załóżmy na przykład, że masz proces, który zapisał do pamięci współdzielonej bieżące statystyki czegoś w 32-bitowym formacie liczby całkowitej i kilka procesów odczytujących te wartości. Ponieważ wartości są liczbami całkowitymi (a zatem na twojej platformie odczyty i zapisy są atomowe) i masz tylko jeden proces, który je zapisuje, a kilka procesów czyta je, nie jest wymagana synchronizacja dla tego projektu.
Jednak w niektórych przypadkach będziesz potrzebował synchronizacji, tak jak w powyższym przykładzie miał wiele pisarzy, lub zamiast liczb całkowitych używasz danych ciągów. Istnieją różne mechanizmy synchronizacji wewnątrz boost (jak również te, non-Boost, ale od czasu już przy użyciu Boost), opisane tutaj:
[Zwiększ informacje dla wersji stabilnej: 1,48] http://www.boost.org/doc/libs/1_48_0/doc/html/interprocess/synchronization_mechanisms.html
[Boost informacji dla wersji używasz: 1,40] http://www.boost.org/doc/libs/1_40_0/doc/html/interprocess/synchronization_mechanisms.html
ze wspólną pamięcią jest to powszechna praktyka, aby umieścić mechanizm synchronizacji u podstawy segmentu pamięci współdzielonej, gdzie może być anonimowe (czyli jądro OS nie zapewnia dostępu do to po imieniu). W ten sposób wszystkie procesy wiedzą, jak zablokować segment pamięci wspólnej i można skojarzyć blokady z ich segmentami (jeśli miałeś na przykład wiele)
Pamiętaj, że muteks wymaga tego samego wątku wykonania (wewnątrz procesu) do odblokuj to, co je zablokowało. Jeśli chcesz zablokować i odblokować obiekt synchronizacji z różnych wątków wykonania, potrzebujesz semafora.
Należy się upewnić, że jeśli zdecydujesz się użyć muteksu, który jest muteksem międzyprocesowym (http://www.boost.org/doc/libs/1_48_0/doc/html/boost/interprocess/interprocess_mutex.html) w przeciwieństwie do muteksu w bibliotece wątków boost, która jest przeznaczona dla pojedynczego procesu z wieloma wątkami.
Czy przeczytałeś http://www.boost.org/doc/libs/1_40_0/doc/html/interprocess/synchronization_mechanisms.html? –