Examen 5 de Febrero 2016 Problema 3

Examen 5 de Febrero 2016 Problema 3

de Carolina Trias Ramirez -
Número de respuestas: 1

Buenas,

Tengo una duda de este ejercicio.
En el caso en que al bebedero hayan entrado machos, luego haya querido entrar una hembra mientras aún estaban los machos, y luego otro macho quiere entrar mientras están los primeros sin que haya entrado la hembra, entiendo que lo que debería ocurrir según la letra es que salgan los machos que estaban en el bebedero, luego entre la hembra y cuando ésta salga entre el último macho.
En la solución del ejercicio entiendo que se permite entrar tanto a machos como a hembras cuando hamsters == 0, por lo que si dentro del select se acepta de forma aleatoria uno de estos encuentros (entrar_hembra o entrar_macho) podría suceder que cuando salga la primera tanda de machos en lugar de entrar la hembra entre el macho que llegó después. ¿Es correcto lo que estoy diciendo?
O asumimos que dentro del select se aceptan FIFO los encuentros cuyas guardas sean evaluadas positivas? De esta forma creo que se estaría cumpliendo el dejar entrar a los hamsters por orden de llegada.

Muchas gracias.



En respuesta a Carolina Trias Ramirez

Re: Examen 5 de Febrero 2016 Problema 3

de Gustavo Brown -

Dentro del select primero se evalúan las guardas para ver cuáles están abiertas. Luego de entre las abiertas que tienen algún encuentro pendiente se elige una entrada al azar y se acepta dicha entrada. Dentro de una misma entrada los pedidos de encuentro se encolan de forma FIFO.

Si luego de evaluar las guardas no hay ningúna abierta con encuentro pendiente, se queda esperando a que se realice un encuentro sobre una de las entradas abiertas (o eventualmente se sale por un OR DELAY xxx o por un ELSE)

La solución "resetea" el estado cuando se va el último hamster. Es decir que puede pasar lo que comentás (hay hamsters macho en el bebedero, llega un hamster hembra lo que hace que ya no puedan entrar más hamsters machos aunque haya alguno nuevo que quiera entrar, luego se van todos los hamsters machos y ahi puede entrar o bien una hembra o bien un macho, aunque este último macho haya llegado luego de la hembra). La letra no define ninguna prioridad en ese caso.

Podrias, si querés, modificar las guardas para darle prioridad al sexo opuesto al que había anteriormente cuando la cantidad de hamsters en el bebedero es cero.

Saludos,
  Gustavo