[Práctico 5][Ejer 4]

Re: [Práctico 5][Ejer 4]

de Andres Bello Ureta -
Número de respuestas: 0
No me dí cuenta cuando subí el .txt me falto escribir el procedimiento avanzar(), este hace:
procedure avanzar(){
   P(s)
   P(s)
   avanzo();
   V(com_tapar);
   V(com_llenar);
}

La idea es que luego de avanzar la cinta el procedimiento avanzar()  habilite a poder tapar y llenar otras botellas, haciendo V(com_tapar) y V(com_llenar).

El tema de que el avanzar se ejecuta una vez tenes razon, deberia poner todo lo que esta en cobegin coend dentro de un loop infino.

Con respecto a tu solución:
(* la cinta como avanza a pasos muy chicos se asume que no es necesario hacer un stop de  la cinta al llenar y/o tapar la botella *) 
procedure avanzar()
begin
     while(true)do
         avanzar_cinta();
end;

Haciendo simplemente avanzar_cinta() no estas esperando que la bottela se llene/tape, si le sacas el cpu a mientras se esta llenando y se lo da a avanzar() podrias avanzar sin nada que te tranque, me explico?, para mi tenes que implementar algo de que antes de avanzar se fije si lleno o tapo.