No estoy de acuerdo con ese argumento, por ejemplo:
El productor toma el control del tanque, llega PRIMERO el inspector, llega DESPUÉS la embotelladora; teóricamente cuando el productor deje libre el tanque, DEBERÍA entrar el inspector ya que LLEGO ANTES que la embotelladora.
Sin embargo nada garantiza que una vez que el productor haga V(tanque) y V(mutexProdEmb), el primero que ejecute sea el inspector.
De hecho, tanto el productor como el inspector como la embotelladora están entre un COBEGIN-COEND. Esto significa que puede ejecutar cualquiera en cualquier orden, incluso pueden ejecutar algunas líneas de uno y algunas líneas de otro intercambiadas.
Entonces la pregunta es:
Si el productor hace V(tanque) y V(mutexProdEmb), por qué aseguras que ejecuta el inspector antes que la embotelladora? Porque perfectamente (dependiendo del planificador de la CPU), podría tomar la CPU la embotelladora y no se estaría teniendo prioridad para el inspector que llegó antes.
Yo creo que la solución no respeta la prioridad para el inspector. Me gustaría que algún profesor explique, en caso de estar errado, porque ésta solución sí la respeta.