1) Supongo que al hacer un recive bloqueante (o cualquier cosa bloqueante) el proceso se encola en una cola del mailbox.Esto es asi?
Pregunto porque vi en ejemplos de pdfs de resolucion de ejercicios de mailbox, que usane mailbox.NotEmpty() para chequear si la cola esta vacia y en funcion de distintos mailbox(y sus colas) manejar la prioridad. Y vi soluciones de examenes que usan un solo mailbox con la cantidad de gente esperando (enviadas en un send y recive tipo contador) y cuando esta es >0 tiene prioridad y si es cero le toca a los otros.
while true{
if mailbox_prio.NotEmpty(){
pasan los de prioridad
}else if mailbox_NOTprio.NotEmpty(){
pasan los que no tienen prioridad
}
}
V.S.
while true{
mailbox.recive(cant_prio);
if (cant_prio>0){
pasan los de prioridad
}else {//cant_prio==0
pasan los que no tienen prioridad
}
}
Si encolan se mantendria el orden "FIFO"
Si no encolan cualqueira que este esperando (bloqueado en un recive) podria atender a quien lo despierte (send)
En el segundo caso habria que usar array de mailbox un mailbox por cliente a atender y manejar un id (indice array)
Cual es?
Salu2