1 Imprementación utilizando semáforos.
3 Para esta implementación del problema se utilizaron cinco semáforos, uno
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.
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.
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.
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 :)
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.