Attualmente sto frequentando il corso di programmazione concorrente nella mia università e recentemente abbiamo iniziato a parlare del concetto di monitor. Mentre capisco la necessità dell'esclusione reciproca, non capisco perché dovrei usare un monitor per quello.
A quanto ho capito, un monitor garantisce che esattamente uno o nessun processo è sempre nella sezione critica. Possiamo ottenere esattamente questo con un semaforo. Inoltre implementiamo monitor (o almeno una possibilità per implementarli è) con semafori.
Quindi perché dovrei implementare qualcosa che fa esattamente la stessa cosa di un semaforo con un semaforo? Quali vantaggi ottengo?