El "problema de los filósofos de la cena" fue el problema presentado.
Básicamente hay 5 filósofos que necesitan comer. (Imagine un plato de comida interminable frente a cada filósofo), entre cada plato hay un tenedor (5 platos, 5 tenedores, 5 filósofos).
Un filósofo solo puede comer si sostiene el tenedor a la derecha y el tenedor a la izquierda. (Sólo dos filósofos pueden comer en un momento dado).
Un tenedor puede ser recogido en cualquier momento que esté disponible y bajarse si está siendo retenido.
Cada horquilla debe ser recogida interdependientemente. (uno a la vez).
Mientras un filósofo no come, ellos piensan (la necesidad de alternar estados es lo que impulsa el problema).
¿Cómo permites que cada uno de ellos coma y alterne el pensamiento (para que los otros puedan comer) sin crear un sistema de interbloqueo (donde un filósofo sostiene un tenedor y espera al otro, evitando que otro filósofo coma)?
Esto tiene sus raíces en los sistemas concurrentes y es una pregunta típica de la universidad que se presenta cuando se habla de concurrencia.
Creo que se han desarrollado 4 o 5 algoritmos "oficiales" para resolver el problema, pero una búsqueda rápida en Google del "problema de los filósofos de los restaurantes" le dará una gran cantidad de resultados.
-
Para obtener más información sobre este problema en Standford U, visite: enlace
-
El artículo de wikipedia se encuentra en: enlace
-
Una solución de MSDN Magizine se encuentra en: enlace
Si lee la versión original del documento en las notas a pie de página en la página 866 indica: "Actas del Congreso IFIP 1965, 213-217." Soluciones de un problema en el control de programación concurrente ".
El problema de la concurrencia y los recursos compartidos es el "Problema de los filósofos que comen". :-)
Espero que ayude.