Duda examen Julio 2009 ejercicio 3 Mailboxes.

Duda examen Julio 2009 ejercicio 3 Mailboxes.

de Luis Alberto Olivera Alonso -
Número de respuestas: 1

En la solución dada para Votante no se podrían intercalar dos votantes y uno obtener la validación de la credencial del otro. No faltaría definir un mailbox extra mutex para que esto no suceda.

Solución dada:

procedure Votante

mb_requiero_atencion.send(NIL);
mb_espero_atencion.receive();

mb_mutex.receive(); //no faltaría este mailbox

mb_votante_credencial.send(mi_crecencial());
mb_sobre.receive({Resultado, Sobre, Credencial});

mb_mutex.send(NIL);

 

if(Resultado == VALIDA)
{
            mb_cuartos.receive(NroCuarto);
            elegir_voto(Sobre, NroCuarto);
            mb_cuartos.send(NroCuarto);
           

            mb_fila_tirilla.receive(CantEsperaTirilla);
            mb_fila_tirilla.send(CantEsperaTirilla + 1); // Quiero entregar tirilla
           

            mb_requiero_atencion.send(NIL);
            mb_quiero_poner_sobre.receive(); // Espero atención de la mesa
           

            Tirilla = sacar_tirilla(Sobre);
            mb_tirilla.send(Tirilla);
            mb_credencial.receive(Credencial);
            depositar_voto(Sobre);
}
end procedure;


En respuesta a Luis Alberto Olivera Alonso

Re: Duda examen Julio 2009 ejercicio 3 Mailboxes.

de Jorge Merlino -
La letra dice que la mesa atiende de a un votante por vez por lo que no podría haber más de un votante luego de mb_espero_atencion.receive() por lo que no puede pasar que se mezcle con otro.

Saludos