Atualmente, estou participando do curso de programação simultânea em minha universidade e recentemente começamos a falar sobre o conceito de monitor. Embora compreenda a necessidade de exclusão mútua, não entendo por que utilizaria um monitor para isso.
Pelo que entendi, um monitor garante que exatamente um ou nenhum processo esteja na seção crítica o tempo todo. Podemos conseguir exatamente isso com um semáforo. Além disso, implementamos monitores (ou pelo menos uma possibilidade de implementá-los) com semáforos.
Então, por que eu implementaria algo que faz exatamente a mesma coisa que um semáforo com um semáforo? Que benefícios eu recebo?