Consulta superparcial 2021

Consulta superparcial 2021

de Bruno Ottonelli De Barros -
Número de respuestas: 4

Buenas, en el ejercicio de ADA la solucion propone crear un admin qu se encarga de muchas cosas, entre ellas mandar a los empleados a limpiar los distintos puestos (Cada puesto avisa cuando precisa ser limpiado).

En clase una vez habian comentado un ejemplo de usar los select que era el siguiente:

Select

DOCTOR.Consulta();

Or

delay(86400)

ir_al_hospital();

End select


Por esto me entra la duda si en vez de que el tema de los puestos los maneje un admin, si seria correcto plantear una solucion donde el puesto quede en un “accept entrar_empleado” y que el epleado este en un loop de la siguiente manera:

Select
Puestos[1].entrar empleado
OR Puestos[2].entrar empleado
OR Puestos[3].entrar empleado
OR Puestos[4].entrar empleado
OR Puestos[5].entrar empleado
OR Puestos[6].entrar empleado

En respuesta a Bruno Ottonelli De Barros

Re: Consulta superparcial 2021

de Jorge Merlino -

Esa sintaxis no es válida. Cuando usas el select para una invocación a un encuentro solo podés usar else para que no sea bloqueante o un or delay para que se bloquee por un rato.

Saludos

En respuesta a Jorge Merlino

Re: Consulta superparcial 2021

de Juan Francisco Simonelli Sofoulis -
Hola, tengo otra consulta relacionada al ejercicio. ¿Estaría incorrecto realizar estos for dentro de los accept en lugar de al inicio de cada iteración del loop? Adjunto imagenes.
Está aclarado en el teórico que no se debería incluir mucho código dentro de un accept, pero me surgió la duda si esto sería considerado directamente incorrecto, o no sería la mejor manera de resolver el ejercicio.
Saludos. 

En respuesta a Juan Francisco Simonelli Sofoulis

Re: Consulta superparcial 2021

de Jorge Merlino -
Si, es incorrecto porque todo el código que se ejecuta adentro del accept lo hace con otro proceso bloqueado. En este caso estarías limitando la concurrencia innecesariamente teniendo al otro proceso bloqueado mientras actualizás variables locales. Es decir que tu región crítica es mas grande de lo necesario e incluye cosas que no debería.