W najprostszej wersji problemu występuje jeden producent, jeden konsument i bufor chroniony przez 3 semafory. Mam do rozwiązania zadanie ze zmodyfikowaną wersją tego problemu i trudno mi rozplanować jak mają działać poszczególne wątki.
Jest trzech producentów i trzech konsumentów. Każdy prodecent ma swój 9-elementowy bufor FIFO i generuje swoją literę, odpowiednio A, B, C. Element po przeczytaniu przez konsumenta zostaje usuwany z bufora. Konsument A aby usunąć elementy musi przeczytać jednocześnie litery 4xB, 3xC, konsument B 5xA, 2xB, 1xC, konsument C 1xA, 1xB
Wydaje mi się ze uruchomienie wszystkich producentów czytających z buforów na raz uniemożliwi mi synchronizację w taki sposób by spełnione były warunki zadania (jednoczesne czytanie z dwóch konkretnych buforów po kilka liter), z drugiej strony narzucenie konsumentom kolejności czytania zupełnie zniszczy ideę samego problemu. Jak powinnam to zaplanować - od strony algorytmicznej? Mile widziane wskazówki dotyczące napisania programu realizującego rozwiązanie w C na systemie Linux :)