Actualmente estoy asistiendo al curso de programación concurrente en mi universidad y recientemente comenzamos a hablar sobre el concepto de monitor. Si bien entiendo la necesidad de la exclusión mutua, no entiendo por qué usaría un monitor para eso.
Según tengo entendido, un monitor garantiza que exactamente uno o ningún proceso esté en la sección crítica en todo momento. Podemos lograr exactamente eso con un semáforo. Además, implementamos monitores (o al menos una posibilidad para implementarlos es) con semáforos.
Entonces, ¿por qué debería implementar algo que hace exactamente lo mismo que un semáforo con un semáforo? ¿Qué beneficios obtengo?