Komunikacja pomiędzy procesami

0

Witam, mam następujący problem: istnieją dwa procesy A i B. Proces B odbiera/wysyła dane do użytkownika. Proces A to proces który zarządza użytkownikami. Proces B np. wyświetla dane i kończy pracę. Za moment znów się uruchamia i wyświetla jakieś dane. Proces A jest cały czas uruchomiony i musi mieć dostęp do danych użytkownika. Moje pytanie brzmi: jak to zaprojektować, tzn. dane użytkownika mają być przechowywane w pamięci dzielonej (proces A i proces B mają dostęp), mają być pobierane z bazy danych, czy może jakieś inne rozwiązanie? Jak to wygląda np. przy 1000 użytkowników, wydajniejsza metoda to 1000 segmentów pamięci dzielonej (użytkownik1, użytkownik2...) czy odczytywanie z bazy danych? Dziękuje za pomoc.

0

Najwydajniejsza jest pamięć dzielona + evet/semafor.
Najwygodniej pewnie jest sobie puszczać queriesy do bazy danych.
Tak więc zależy czego oczekujesz i jakiego typu dane chcesz przesyłać.

0

Tutaj najważniejsza jest wydajność. Proces B odbiera dane i wysyła (np. jakąś tablice charów) do A, w jakiś sposób musi zasygnalizować procesowi A że wysłał dane. Proces A odbiera i sprawdza poprawność oraz modyfikuje dane i wysyła sygnał do procesu B że zakończył prace nad jego wiadomością. Proces B wyświetla wtedy dane (np. pobiera je zmodyfikowane przez proces A z pamięci dzielonej). Dla każdego użytkownika tworzyć nową pamięć dzieloną za pomocą shmget? Do wysyłania wiadomości miałem zamiar wykorzystać kolejkę komunikatów, jak powiadomić proces o jakimś wydarzeniu?

0

Odświeżam. Dodatkowo zapytam, prawidłowym działaniem jest tworzenie nowego segmentu pamięci współdzielonej dla każdego użytkownika? Tzn. :

shmget("user1"...);
shmget("user299"...);
 

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