Buenas, esta seria una posible solucion al ejercicio 4 del Practico 5 pero con ADA. Podria saber si esta bien?
Hola Guzmán!
Esa solución tiene varios problemas, en primer lugar, eso es un único task, y para que se complete un rendezvous precisás un task que esté aceptando la entry call y otro que esté intentando invocarla. Así que vas a precisar como mínimo algún otro task que intente invocar Maquina.llenar_botella() o Maquina.tapar_botella(). Por otro lado, en ningún lugar invocás a la función tapar_botella() ni llenar_botella(). Lo que se hace en este código que escribiste es definir entry calls con los mismos nombres, pero una vez que se produce el rendezvous, no se ejecuta ningún código. Las entry calls Maquina.llenar_botella y Maquina.tapar_botella deberían tener un cuerpo donde se ejecuten las funciones llenar_botella() y tapar_botella() que provee la letra.
Luego, tiene un problema de concurrencia y es que las funciones llenar_botella y tapar_botella (asumiendo el arreglo que puse más arriba) se ejecutan en el mismo task, por lo tanto no pueden ejecutarse a la misma vez. Eso, lamentablemente, invalida la solución.
Saludos,
Federico
Esa solución tiene varios problemas, en primer lugar, eso es un único task, y para que se complete un rendezvous precisás un task que esté aceptando la entry call y otro que esté intentando invocarla. Así que vas a precisar como mínimo algún otro task que intente invocar Maquina.llenar_botella() o Maquina.tapar_botella(). Por otro lado, en ningún lugar invocás a la función tapar_botella() ni llenar_botella(). Lo que se hace en este código que escribiste es definir entry calls con los mismos nombres, pero una vez que se produce el rendezvous, no se ejecuta ningún código. Las entry calls Maquina.llenar_botella y Maquina.tapar_botella deberían tener un cuerpo donde se ejecuten las funciones llenar_botella() y tapar_botella() que provee la letra.
Luego, tiene un problema de concurrencia y es que las funciones llenar_botella y tapar_botella (asumiendo el arreglo que puse más arriba) se ejecutan en el mismo task, por lo tanto no pueden ejecutarse a la misma vez. Eso, lamentablemente, invalida la solución.
Saludos,
Federico