[SuperParcial Diciembre 2020] - Ejercicio 4 - Ada

[SuperParcial Diciembre 2020] - Ejercicio 4 - Ada

de Luis Guillermo Cuadro Benitez -
Número de respuestas: 2

Buenas, tengo una duda respecto a este ejercicio en la task Vendedor. 

Cuando comienza el programa se realiza el for:



El cual entiendo yo que le asigna un id a cada vendedor. Una vez que se llama a la tarea vendedor, supongo recibe los cinco encuentros a set_id (id), los cuales asumo quedan encolados en el accept set_id ... y los va aceptando de a uno... Esto es así? 

Luego en la task Vendedor se realiza...



Entonces, asumiendo que estoy en lo correcto con respecto a lo que que entiendo comente más arriba ...mi duda es si cuando se acepta el primer encuentro con id=1 (por ejemplo), hasta que no salga del accept, el procedimiento esta trancado allí.. una vez que sale del accept y realiza el end  del accept de set_id...  puede pasar que en ese instante de tiempo, se accepte otro encuentro para el id=2, y cuando el proceso al que se le asigno el id=1 vaya a ejecutar la linea de codigo  "manejador_vendedores.vendedor_libre(id);" el valor de id se vea cambiado de 1 a 2 dado que vino otro proceso unos mili segundos antes que le asigno el identificador 2 a la variable local id, y como esa variable no esta mutuo-excluida se cambie su valor de id a 2, cuando en realidad tenia que ser 1, pero llego otro proceso unos milisegundos antes y le seteo el valor 2. 

Espero se haya entendido mi duda. Gracias







En respuesta a Luis Guillermo Cuadro Benitez

Re: [SuperParcial Diciembre 2020] - Ejercicio 4 - Ada

de Jorge Merlino -

Vendedores es un array de tasks por lo que hay 5 tareas vendedor distintas. Cada una solo recibe un id que es constante durante toda su ejecución.