Ej 11 Práctico 5

Ej 11 Práctico 5

de Sebastian Passaro Pereira -
Número de respuestas: 4
Para sacar una carta del mazo se tiene que cumplir que el jugador quiera jugar y que el jefe de mesa no esté reordenando el tablero.
Hay un monitor para controlar el mazo, y otro para el tablero. En el de tablero voy a tener un booleano que sea true si se está reordenando.
Mi objeivo es desde el monitor de mazo en la operación para sacar una carta, verificar que el booleano del otro monitor esté en false. Para eso hice una función dentro del monitor de tablero que simplemente retorne el valor.

Mi problema es el siguiente: ¿cómo controlo que el valor retornado no cambie en el monitor de tablero antes de que pueda ser utilizado en el monitor del mazo?

Problema adicional: también tengo la dificultad de que si quiero dormir al proceso en el monitor mazo si el booleano es true, luego no encuentro forma de despertarlo porque eso debería ser desde el otro monitor. ¿Es posible que tenga que ejecutar también una función del monitor de mazo para que despierte a los que quedaron esperando por el reordenamiento, una vez que se termina de reordenar el tablero en el monitor de tablero?
En respuesta a Sebastian Passaro Pereira

Re: Ej 11 Práctico 5

de Jorge Merlino -

Por un lado, para sacar una carta el jefe tiene que estar esperando para reordenar (o reordenando), vos lo dijiste al revés.

Por otro lado, el chequeo de que el jefe esté esperando no deberías hacerlo dentro del monitor del mazo. Eso es una lógica propia de cada jugador y no tiene sentido hacerla dentro del monitor que bloquea a todos los demás clientes. De hecho tenés que saber si está esperando o no antes de saber si vas a usar el mazo.

Sobre el problema de la variable en realidad no te importa si cambia, lo que te importa es que en el momento de jugar el jefe estaba esperando por lo que tenés que ver el mazo. Si eso cambia un milisegundo después no te importa. Lo que puede pasar es que la carta te diga que tenés que esperar por el jefe pero cuando vas a esperar el jefe ya terminó.

En respuesta a Sebastian Passaro Pereira

Re: Ej 11 Práctico 5

de Enrique Javier Cardozo Muraña -

Yo tengo otra duda sobre la letra del ejercicio, no entiendo a que se refiere en la nota "No se pueden usar tareas auxiliares pero si se puede representar a los actores con mas de un proceso".

No entiendo lo de tareas auxiliares ya que en la letra no indica que procedimientos hay que implementar.


Gracias

En respuesta a Enrique Javier Cardozo Muraña

Re: Ej 11 Práctico 5

de Sebastian Passaro Pereira -

Quiere decir que si estás teniendo problemas en la implementación y necesitas un procedimiento que te haga alguna magia que te sirve porque decidis solo implementar un procedimiento jefe y otro jugador, no podés hacerlo.

Pero lo que si podés es a los actores jefe y/o jugador, representarlos con más de un proceso. Puntualmente, el jefe de mesa puede tocar el mazo y el tablero a la vez segun la letra. Como eso no podés hacerlo con un procedimiento jefe por más que tengas dos monitores, la solucion es separar jefe en dos procedimientos, uno que use el monitor con operaciones sobre el mazo, y el otro que use el monitor con operaciones sobre el tablero.