¿Mezclar tipos de mailboxes?

¿Mezclar tipos de mailboxes?

de Juan Manuel Rivara De Leon -
Número de respuestas: 5

Buenas.

Quería consultar si era admisible utilizar en un mismo ejercicio de mailbox un mailbox con capacidad infinita y otro con capacidad finita. O, alternativamente, definir un mailbox de capacidad finita cuya capacidad sea una constante N desconocida a priori (pero que coincide con e.g. la cantidad de cierto tipo de actor en el problema).

Y ya que estoy consultando por mezclas de mailboxes también aprovecho para preguntar si sería eventualmente admisible especificar una semántica de espera (bloqueo en send/receive) para un mailbox y otra semántica para otro mailbox.

Saludos.

En respuesta a Juan Manuel Rivara De Leon

Re: ¿Mezclar tipos de mailboxes?

de Jorge Merlino -

En general se espera que todos los mailboxes sean iguales. Es bastante complicado corregir si hay varias semánticas distintas mezcladas. No es que esté mal si mezclás semánticas pero es más difícil para todos (vos incluido).

Seguro que no podés definir un mailbox finito de capacidad desconocida, si es finito tiene que tener un tamaño dado.

Saludos

En respuesta a Jorge Merlino

Re: ¿Mezclar tipos de mailboxes?

de Juan Manuel Rivara De Leon -
Ok, trato de mantener una única semántica entonces.
Lo del tamaño desconocido iba por el lado de que hay algunas instancias de soluciones donde se asume una cantidad finita pero desconocida de cierto tipo de actor muy numeroso (clientes, usuarios, etc) y se terminan haciendo cosas como definir un array [1..n] of {mutex} (recuerdo un ejemplo con tasks de Ada del último práctico); o también se ponen cosas como "cobegin; proc_varios(); ...; proc_varios(); coend;"; en este sentido es que hablaba de una cantidad finita desconocida (más que desconocida, no explícitamente definida).
Saludos.
En respuesta a Juan Manuel Rivara De Leon

Re: ¿Mezclar tipos de mailboxes?

de Jorge Merlino -

No se pueden hacer arreglos de tamaño desconocido. ¿Dónde viste ese array de [1..n]?

Saludos

En respuesta a Jorge Merlino

Re: ¿Mezclar tipos de mailboxes?

de Juan Manuel Rivara De Leon -
En el ejercicio de Ada del Doctor (ejercicio 1 del práctico 6), se vió una resolución en la clase de práctico en la cual tras definir task types para Niño y Adulto, como nominalmente tienen que existir instancias de las tasks para que hagan algo, se definieron arrays de tasks de ese task type de esa manera. Igualmente cuando publicaron la solución escrita este detalle no figura. No me termina de quedar claro entonces cómo se espera que se manejen las instancias de task types cuando no hay cantidades definidas.
Dicho sea de paso, la solución publicada tampoco tiene el BEGIN END del programa principal, que según nos informaron esa misma clase era necesario para considerar el programa completo.
Saludos.
En respuesta a Juan Manuel Rivara De Leon

Re: ¿Mezclar tipos de mailboxes?

de Jorge Merlino -

En ADA normalmente no definimos instancias de los tipos que no sabemos la cantidad. Solamente los definimos como un task type y asumimos que hay alguien que crea las instancias. Eso es el equivalente a los puntos suspensivos en el cobegin-coend.

Saludos