]> git.llucax.com Git - z.facultad/75.59/filosofos.git/blob - doc/filosofos3.txt
Doc del filosofos3
[z.facultad/75.59/filosofos.git] / doc / filosofos3.txt
1 Implementación utilizando Monitores.
2
3 Cuando el programa inicia, crea la clase Palitos, que es la encargada de administrar
4 los palitos para comer. Esta clase garantinza la exclusión mutua utilizando Monitores.
5
6 La clase Palitos se tiene dos métodos, uno para obtener un palito y otro para soltarlo.
7 Ambos métodos utilizan un monitor. Cuando algun comensal pide un palito el Monitor
8 espera que que esé libre en un loop y llamando a wait() y al obtener finalmente el
9 palito lo setea en TRUE para indicar que está en uso.
10
11 El método solarPalito no hace un loop con el wait, ya que no hay manera de que
12 dos procesos llamen el método para liberar el mismo palito. Primero libera
13 el palito (seteandolo en FALSE) y luego hace una llamada a notify() para que
14 se despierte un thread que esté esperando por un palito.
15
16 La lógica de los filosofos, representada por la clase del mismo nombre, es similar
17 a las demás. Empiezan pensando y luego trata de obtener los palitos y cuando lo hace
18 pasa a comer. En todas las acciones siempre se queda un tiempo aleatoreo.
19
20 El programa principal crea primero el monitor de palitos y luego los N folósofos
21 pasándole por parámetro que palitos tiene a su lado y el Monitor.