Cześć

0

Cześć!

0
 public void dodajDoMagazynuElementA(){
            semaforA.PB();
            dodajDoMagazynuElement("A");
            semaforA.PB();
            semaforB.VB();
 }

Nie rozumiem. Dlaczego dwa razy "semaforA.PB();" ?

Z tego co widzę, to stosujesz naprzemiennie semafory w dwóch znaczeniach. Do rozwiązania tego problemu potrzeba więcej semaforów. Niektóre wątki muszą czekać aż element X się pojawi, ale producent X musi czekać, aż X zostanie wzięty z magazynu.

Na przyszłość jeszcze jedna dobra rada - prawdopodobieństwo, że ktoś udzieli pomocnej odpowiedzi jest odwrotnie proporcjonalne do długości posta. Lepiej więc wyodrębnić problem i napisać jak najmniej kodu.

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