ADA Sincronizacion de tasks

ADA Sincronizacion de tasks

de Bruno Fabian Piaggio Klimas -
Número de respuestas: 2

Suponiendo que tengo una cantidad indeterminada de task de tipo A y quiero sincronizar a una de ellas en especial con otra task B, es correcto hacer algo de este estilo :

numTask = -1;

while taskAEsperada  <> numTask loop  

   accept sincronizarA(numTask) do

     if numTask = taskAEsperada then

      // Hago lo que sea necesario

    end if;

  end sincronizarA;

end loop;

 

La duda viene del ejercicio de concurrencia del examen de marzo del 2014. Si estoy "mal rumbeado" agradezco que me indiquen alguna idea (antes de descargar la solución del examen) 
 

En respuesta a Bruno Fabian Piaggio Klimas

Re: ADA Sincronizacion de tasks

de Jorge Merlino -

No, eso no se puede hacer porque estarías aceptando encuentros con tareas que no querés atender. Tampoco estaría claro que pasa con la tarea que está llamando el encuentro y que es atendida "sin querer".

Lo que podés hacer es definir un array de entradas y hacer

accept sincronizarA[numTask]()

pero eso implicaría que el tamaño del array es un número definido y acotado por la letra (no puede ser infinito ni dejarse como variable libre)