Procedure funcionario(){ bool ok; string clave; cedula ci=mi_cedula(),devuelta; send(pedidos_ventanilla,{ci,0}); ok=receive(ok_funcionario); if(ok){ clave=receive(clave_activacion); equipo=receive(nro_equipo); confirmacion=introducir_clave(equipo,clave); send(nro_equipo,equipo); send(pedidos_ventanilla,{0,confirmacion}); devuelta=receive(ventanilla_devoluciones); } else ir_al_cuarto(); } Procedure ventanilla(){ cedula ci_ingreso,ci_devolver; pedido={cedula,string}; string clave; for(int i=1;i<=3;i++) send(nro_equipo,i); while(true){ pedido=receive(pedidos_ventanilla); if(pedido[0]=0){//si es un codigo de confirmacion ci_devolver=obtener_cedula(pedido[1]); send(ventanilla_devoluciones,ci_devolver); }else{//si es una cedula if(validar_pertenencia(pedido[1])){ send(ok_funcionario,true); registrar_usuario(pedido[1]); clave=generar_clave_de_activacion(); send(clave_activacion,clave); } else{ send(ok_funcionario,false); llamar_a_seguridad(); } } } } Mailboxes: pedidos_ventanilla tamaņo 0, receive bloqueante, send no bloqueante ok_funcionario tamaņo 0, receive bloqueante, send no bloqueante clave_activacion tamaņo 0, receive bloqueante, send no bloqueante nro_equipo tamaņo 3, receive bloqueante, send no bloqueante ventanilla_devoluciones tamaņo 0, receive bloqueante, send no bloqueante