/ / Plugin / moduł komunikacji w wielowątkowej aplikacji C ++ - c ++, wielowątkowość

Metoda komunikacji wtyczek / modułów w wielowątkowej aplikacji C ++ - c ++, wielowątkowość

Projektuję aplikację C ++, która składa się zw dużej mierze niezależne wtyczki lub moduły, które od czasu do czasu produkują wyniki przydatne dla innych wtyczek. Na przykład moduł analizy zawiera przydatne dane i przesyła je do modułów akcji. Każdy moduł będzie działał we własnym wątku; w ten sposób moduły analityczne mogą kontynuować gromadzenie danych, podczas gdy moduły działania obsługują dane z taką szybkością, jaką potrafią.

Szukam odpowiedniej wiadomości przekazującej architekturę / wzór projektu. Ta wątek stackoverflow podaje pewne sugestie, ale nie jestem pewien, czy zwykły interfejs będzie działał w środowisku wielowątkowym.

Myślałem o jakimś kanalew oparciu o architekturę, w której każdy moduł nadaje coś na kanale i który moduł jest nim zainteresowany - słucha. Jeśli istnieje kilka gotowych bibliotek na licencji liberalnej - tym lepiej.

Odpowiedzi:

2 dla odpowiedzi № 1

Używam ACE (Adaptive Communication Environment) do zarządzania wątkami, komunikacji TCP / UDP, relacji mutex i programowania.

ACE to wysoce przenośny zbiór wywołań wzorców rdzenia platformy. Najlepszy ze wszystkich jest bezpłatny, open source i obecnie jest aktywnie rozwijany.

http://www.cs.wustl.edu/~schmidt/ACE.html

Do Twojej aplikacji polecam szukaniew szczególności w klasie "ACE_Task_Base", aby zapewnić wielowątkowość, oraz "ACE_Reactor", aby zarejestrować wszystkie procedury obsługi dla asynchronicznej architektury wywołań zwrotnych.


1 dla odpowiedzi nr 2

Być może zainteresuje Cię spojrzenie ZeroMQ biblioteka działająca jak struktura współbieżnościrównież. Korzystając z tej biblioteki, twoje komponenty będą komunikować się ze sobą, wysyłając wiadomości do nazwanych gniazd ZeroMQ. Istnieje wiele typów gniazd (TCP, IPC, inproc) i kilka wzorców do wysyłania żądań-odpowiedzi i publikowania-subskrypcji.