vuoi
o PayPal
tutte le volte che vuoi
Monitor tramite semafori
Per ogni monitor ho:
- Un semaforo mutex inizializzato a 1 per la mutua esclusione delle operazioni del monitor.
Per ogni variab. di condizione cond ho:
- Un semaforo condsem inizializzato a 0 sul quel un processo può sospendere tramite una Wait (condsem)
- Un contatore condcount inizializzato a 0 per tenere conto dei processi sospesi in condsem
Signal and Continue
La signal segnala che un processo può continuare. Il chiamante prosegue l'esecuzione quando esce il monitor, altri nodi I possono eseguire.
entry queue → call → monitor class condition queue → wait → exclusion → Signal & Continue
void Wait (condition cond) { condcount++; signal (mutex); Wait (condsem); Wait (mutex); } void Signal (condition cond) { if (condcount > 0) { condcount--; signal (condsem); } }