Ejercicio 1

Ejercicio 1

de Diego Ismael Marichal Chavez -
Número de respuestas: 3

Hola, no estoy pudiendo resolver este ejercicio, no entiendo como hacer que todos los llamados de los distintos procesos del procedimiento recibir_sinc_mult finalicen a la vez solo usando mailbox, ya que por la naturaleza de los mailbox al recibir o enviar, no se espera a que el buffer se llene o se vacia, no entiendo como hacer esperar a los receptores



Saludos

Diego

En respuesta a Diego Ismael Marichal Chavez

Re: Ejercicio 1

de Federico Rivero -
Hola Diego!

Si no se te ocurre cómo hacerlo con mailbox tratá de pensar cómo resolverías ese pedacito que te falta con semáforos, y luego usá la equivalencia entre semáforos y mailbox (ver teórico), que es extremadamente sencilla.

Vichate si con eso lo podés resolver y si no volvé a preguntar, por favor.

Saludos!
Federico
En respuesta a Federico Rivero

Re: Ejercicio 1

de Diego Ismael Marichal Chavez -
Hola, muchas gracias por responder, pensandolo lo unico que se me ocurre es que el enviar_sinc_mult haga un for de 1 a cant_destinos haciendo un send(receptores, mensaje), mientras que recibir_sinc_mult haga un receive(receptores, mensaje), pero el tema es que no todos los recibir_sinc_mult estan terminando a la vez, se cumple que el enviar_sinc_mult termina con el ultimo recibir_sinc_mult, pero no es lo que pide la letra segun entiendo, es lo mas parecido a la equivalencia semaforo con mailbox


En respuesta a Diego Ismael Marichal Chavez

Re: Ejercicio 1

de Federico Rivero -

Solo aclarar que sí, no podés despertar a más de un proceso con una única primitiva de pasaje de mensajes, así que lo mejor que podés hacer es despertar a los procesos secuencialmente, asegurándote de no bloquearte en el medio.

Saludos,

        Federico