Quando eseguo il programma (ripoto solo una parte dell'output) ottengo:
1 Thread[Producer 0,5,main] writing 0
2 getBuffer afther 0
3 getBuffer before 0
4 Producer waiting
5 Thread[Producer 3,5,main] writing 3
6 Producer waiting
7 Producer waiting
8 Thread[Consumer 0,5,main] get0
9 getBuffer afther 3
10 getBuffer before 3
...
Allora si avvia il primo produttore scrive 0, poi (rihe 2,3) viene chiamto il consumatore perchè altrimenti il produttore alla riga 5 non potrebbe scrivere e così via.
il problema è che solo alla linea 8 viene stampato che il cosumatore ha prelevato
dal buffer il valore 0 se pur lo ha fatto alle linee 2 e 3.
L'output che mi sarei aspettato sarebbe stato:
1 Thread[Producer 0,5,main] writing 0
2 getBuffer afther 0
3 getBuffer before 0
4 Thread[Consumer 0,5,main] get0
5 Producer waiting
6Thread[Producer 3,5,main] writing 3
...
Cosa c'è che non va?

Rispondi quotando