Examen Julio 2013 -Ejercicio 3

Examen Julio 2013 -Ejercicio 3

de Maria Victoria Armand Ugon De Souza -
Número de respuestas: 1

Buenas tardes,

En este ejercicio en la tarea Box en la guarda del entry "obtener_maquina" en vez de contar la cantidad de auditores en espera, no seria lo mismo hacer un count sobre el entry "comenzar_auditoria" y obviar la entry quiero_comenzar_auditoria?

O sea en vez de:

select 

when cant_maquinas > cant_productores and cant_auditores_en_espera = 0 

and Quiero_comenzar_auditoria'count = 0 and cant_auditores = 0 

accept Obtener_maquina();

 cant_productores = cant_productores + 1;

Cambiar por:

select 

when cant_maquinas > cant_productores

and comenzar_auditoria'count = 0 and cant_auditores = 0 

accept Obtener_maquina();

 cant_productores = cant_productores + 1;


Muchas gracias

En respuesta a Maria Victoria Armand Ugon De Souza

Re: Examen Julio 2013 -Ejercicio 3

de Gustavo Brown -

Maria,

  No es lo mismo. Fíjate el siguiente caso:

  - Cuando el box llega al select ya hay algún productor en el mismo y no hay nadie más que quiera un encuentro con el box. 

En tu código propuesto la entrada de los productores quedaría abierta (porque no hay auditor esperando) y la de los auditores cerrada (porque hay un productor adentro). Un momento más tarde llega un auditor pero la entrada está cerrada. Luego llega otro productor y lo vas a dejar entrar, pero no deberías porque hay un auditor que tiene prioridad. 

Con la solución publicada esto no pasa porque la entrada de anuncio de un auditor queda abierta y luego cuando llega el segundo productor no se lo deja entrar porque el box ya sabe que hay un auditor esperando. 

Saludos,

   Gustavo