Me quedó una duda con el uso de
mb_atencion.send(NIL);
mb_espero_mesa.receive();
Entiendo que la idea es muy usada en ejercicios de Mailbox en general, que con el primer mailbox nos paramos en una fila de espera, y que luego el 2do mailbox sirve para que la Mesa (o generalizando, otro proceso) nos avise que es nuestro turno, en este caso la idea es que la Mesa elige de la gente en espera en orden. Ahora, me queda la duda, si muchos procesos votantes concurrentes ejecutan mb_atencion.send(NIL); y se les quita la CPU antes de llegar a correr mb_espero_mesa.receive();, cuando llegue un proceso N y este si llegue a ejecutar mb_espero_mesa.receive(); ¿no me genera problemas que el que se primero que se bloquee en el recieve no sea el primero en haber hecho un send necesariamente? ¿no va a recibir el mb_espero_mesa.send(); un proceso que no lo merece antes si lo que buscamos es mantener una cola? ¿Se respeta el orden de llegada o hay "colados"? Si se respeta, ¿Cuál es la justificación?
Saludos y gracias