]> git.llucax.com Git - z.facultad/75.59/filosofos.git/blob - doc/filosofos2.txt
Agrego doc sobre la implementacion con semaforos.
[z.facultad/75.59/filosofos.git] / doc / filosofos2.txt
1 Imprementación utilizando semáforos.
2
3 Para esta implementación del problema se utilizaron cinco semáforos, uno
4 por cada palito.
5
6 Cuando el programa inicia, crea los semáforos e inicializa a los comensales
7 diciendoles que palito tiene a su derecha y cual a su izquierda, numerados de
8 0 a N-1, siendo N la cantidad de comensales.
9
10 Cuando un nuevo Filosofo es creado, éste comienza pensando un tiempo, y se 
11 mantiene así hasta poder obtener los palitos que le corresponde. Eso hace que
12 como mínimo esté pensando entre 2 y 5 segundos (es un rango aleatoreo) y se
13 quede en ese estado hasta poder empezar a comer.
14
15 La obtensión de palitos no es simultánea, es decir, primero trata de agarrar
16 el que tiene a su derecha (esperando que sea liberado en caso de estar en uso)
17 y luego obtiene el izquierdo. Recién cuando tiene ambos palitos comienza a comer
18 un tiempo aleatoreo de tiempo, y luego libera los palitos.
19
20 NOTA MIA : cuando agarro el palido derecho, y no puedo agarrar el izquierdo
21 se sigue considerando que estoy pensando ??? o estoy "en tramite de comer :)"
22 Eso no me queda claro si esta bien, pero calculo que si :P. ESTE TEXTO HAY
23 QUE BORRARLO DE ACA :)
24
25 Cuando un comensal ha podido comer cantidad suficiente de veces (especificada
26 por parámetro cuando se ejecuta el programa) el thread "muerte" y el programa
27 finaliza cuando todos los filosofos han completado su cena.