Práctico 5 Ejercicio 4 parte b

Re: Práctico 5 Ejercicio 4 parte b

de Gustavo Brown -
Número de respuestas: 0

La idea es que las funciones puedo_llenar y puedo_tapar sólo pueden ser ejecutadas por los procesos Llenador y Tapador.

La tarea auxiliar cinta de tu solución no deberia llamar a esos procedimientos.

Este problema con monitores se puede resolver sin utilizar tarea auxiliar.

La solución que planteas además tiene deadlock. Ej: Maquina_llenar detecta que no puede llenar, en ese punto pierde el procesador; la cinta avanza hasta que hay una botella debajo de la boca de llenado. Ahi cinta manda un Llenar.signal() que se pierde porque nadie hizo el wait y la cinta luego se bloquea en DormirCinta, luego toma el control la máquina de llenar hace un Llenar.wait() y se queda en deadlock.

Saludos,
  Gustavo