Komunikacja między procesami - Shared memory

0

Cześć,

Otóż pracuję nad projektem pisanym w c++ , którego założeniem jest uruchamianie n-instancji danej aplikacji w której każda wykonuję część pomiarów. Okresowo , trzeba się do nich dostać, odczytywać i uśredniać wyliczone dane.

Wpadłem na pomysł użycia "Shared memory" , które tworzyłby "root" i rozdzielał bloki pamięci pomiędzy instancje. Teraz pytanie ! Każdy program może tworzyć w ramach potrzeby tablice dynamicznie , a całość zamknięta jest w jednej klasie zawierająca wiele danych , o wielu typach. Pod .NET'em pewnie użyłbym serializacji w bardzo prosty sposób , ale tutaj wydaje się to nie możliwe.

Podsumowując : Zna ktoś jakiś "sprytny" pomysł ,żeby przełożyć obiekt takiej klasy na ten surowy obszar pamięci ?

0

A jakiej biblioteki do c++ używasz? Niektóre maja coś w rodzaj serializacji, chociaż nie jest to tak wygodne jak w .net. A tak w ogóle, to czemu wymyślasz takie karkołomne rozwiązania zamiast użyć wątków?

0

Dzięki za odpowiedź.

Niestety jest to narzut z góry , i nie bardzo mam w tej kwestii co do gadania.
Obecnie piszę w "czystym" C++.

0

Właśnie coś takiego obecnie piszę (Win) , kilka instancji aplikacji z dostępem do danych które
generuje inna z przeznaczeniem dla konkretnego pomiaru(instancji aplikacji odbierającej) .
Zastosowałem plik mapowany w pamięci (konkretnie obszar w pliku wymiany), działa ładnie [green] .
Chciałem przełożyć na .NET i szlag mnie trafia co to za g..no .

0

Do serializacji możesz użyć np Google Protocol Buffers.

Do przesyłu danych między procesami użyj Named Pipes.

0

donki7, jeśli się nie mylę, to named pipes są pod linuxem, a autor nie napisał pod jaki system tworzy program.

0

Oj.. tak się kończy psioczenie na WinApi przez okulary BCB .

1 użytkowników online, w tym zalogowanych: 0, gości: 1