Semafory - synchronizacja korzystania z pamięci współdzielonej

0

Mam jeden segment pamięci współdzielonej składający się z czterech (bloków) tablic znaków char buf[MAX_SIZE].
Moim zadaniem jest napisanie dwóch programów (co istotne mam dopuścić współpracę kilku producentów i kilku konsumentów).

Producent po prostu czyta ze standardowego wejścia i zapisuje dane do pamięci współdzielonej, natomiast konsument odczytuje z pamięci i wypisuje na standardowe wyjście. Pojedynczy odczyt i zapis powinien ograniczać się do jednego bloku.

Do synchronizacji muszę użyć semaforów. Mam jednak problem z ich zaplanowaniem. Powinienem użyć czterech semaforów binarnych? W jaki sposób je opuszczać i podnosić tak, aby nie blokowały same siebie?

Z góry dzięki za pomoc ;)

0

To zależy od logiki przetwarzania. Jak to ma działać? Producent/konsument wybiera blok i czeka aż będzie wolny? Czy może ma dostać pierwszy wolny z tej puli 4?

0

Wydaje mi się, że lepszym rozwiązaniem byłoby dostanie pierwszego wolnego. Chociaż to wydaje się być trudniejsze do implementacji. Jak można by zaprojektować semafory przy takim rozwiązaniu?

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