int nbomb = 0; bool butta = false; bool attesa_piero = true; Semaphore piero_s = 0; Semaphore mario_s = 1; Semaphore rosa_s = 0; Semaphore cliente_s = 0; Semaphore ricevi_s = 0; Semaphore mutex = 1; Process Mario{ while(1){ V(mario_s); < friggi > P(mutex); nbomb = 30; set_timer(60 minuti); if(attesa_piero == true){ V(piero_s); } if(da_buttare == true){ da_buttare = false; V(rosa_s); } V(mutex); } } Process Piero{ while(1){ P(cliente_s); P(mutex); if(butta == false AND attesa_piero == false){ V(piero_s); } V(mutex); P(piero_s); < servi cliente > V(ricevi_s); P(mutex); nbomb--; if(nbomb == 0 and butta == false){ attesa_piero = true; V(mario_s); } V(mutex); } } Process Rosa{ set_timer(60 minuti); while(1){ wait_timer(); P(mutex); butta = true; V(mutex); P(rosa_s); } } Process Cliente{ V(cliente_s); P(ricevi_s); < consuma >; }