]> git.llucax.com Git - z.facultad/75.59/filosofos.git/commitdiff
Doc del filosofos3
authorRicardo Markiewicz <rmarkie@fi.uba.ar>
Wed, 30 Nov 2005 02:13:10 +0000 (02:13 +0000)
committerRicardo Markiewicz <rmarkie@fi.uba.ar>
Wed, 30 Nov 2005 02:13:10 +0000 (02:13 +0000)
doc/filosofos3.txt [new file with mode: 0644]

diff --git a/doc/filosofos3.txt b/doc/filosofos3.txt
new file mode 100644 (file)
index 0000000..db14dd3
--- /dev/null
@@ -0,0 +1,21 @@
+Implementación utilizando Monitores.
+
+Cuando el programa inicia, crea la clase Palitos, que es la encargada de administrar
+los palitos para comer. Esta clase garantinza la exclusión mutua utilizando Monitores.
+
+La clase Palitos se tiene dos métodos, uno para obtener un palito y otro para soltarlo.
+Ambos métodos utilizan un monitor. Cuando algun comensal pide un palito el Monitor
+espera que que esé libre en un loop y llamando a wait() y al obtener finalmente el
+palito lo setea en TRUE para indicar que está en uso.
+
+El método solarPalito no hace un loop con el wait, ya que no hay manera de que
+dos procesos llamen el método para liberar el mismo palito. Primero libera
+el palito (seteandolo en FALSE) y luego hace una llamada a notify() para que
+se despierte un thread que esté esperando por un palito.
+
+La lógica de los filosofos, representada por la clase del mismo nombre, es similar
+a las demás. Empiezan pensando y luego trata de obtener los palitos y cuando lo hace
+pasa a comer. En todas las acciones siempre se queda un tiempo aleatoreo.
+
+El programa principal crea primero el monitor de palitos y luego los N folósofos
+pasándole por parámetro que palitos tiene a su lado y el Monitor.