Buenas, la solución que se me ocurrió fue la siguiente :
program ej6;
var
cliente-caja,caja-cliente: array[1..N] of Mailbox(int)
Auto-admin,Admin-auto:Mailbox
begin
...
end
Procedure Auto(nro_t)
begin
SEND(Auto-admin,NULL)
caja=RECEIVE(Admin-auto)
SEND(cliente-caja[c],nro_t)
ticket=RECEIVE(caja-cli[caja])
end;
procedure Caja(nro_c)
begin
while true {
nro_t = RECEIVE(Auto-caja[nro_c])
ticket=pago(nro_t)
SEND(Cajas-cli[nro_c],ticket)
}
end
procedure Admin()
begin
while true {
RECEIVE(Auto-admin);
nro_c=Obtener_Caja_Mas_Vacia(Cliente-caja)
SEND(Admin-auto,nro_c)
}
end
La duda es: Primero, si esta bien y si esto me garantiza que el cajero al momento de dar el ticket, se lo de al auto "correcto" que realizo el pago.