Práctico 6 Ejercicio 1

Re: Práctico 6 Ejercicio 1

de Fernando Roman Penades Texeira -
Número de respuestas: 0

Me pasó lo mismo.

La primera solución que se me ocurrió fue usar un mailbox de capacidad 0 y enviar bloqueante, lo cual hace que el ejercicio sea casi trivial. El problema ahí es que los receptores se van yendo al recibir, y en la letra del ejercicio se da a entender que tiene que irse todos juntos.
Esto del mailbox con capacidad 0 soluciona tu problema de hace que el enviar haga polling después del for, pero como dije arriba, no elimina el polling del recibir.

Para eso otro lo único que se me ocurrió es que todos queden esperando recibir en un mailbox de NIL (inicialmente vacío) y vas contando cuantos hay. Al llegar al número correcto, el último en vez de bloquearse, hace un enviar a ese mailbox, despertando a otro y así sucesivamente hasta que se hayan despertado todos. No van a terminar exactamente al mismo tiempo, pero te aseguras de que estén todos antes de empezar a terminar.
Cada uno, al despertarse, debería hacer recibe del otro mailbox (el que lleno el enviar) para recibir el mensaje real del tipo TMensaje.