debug_mode=ON

Buscar en

 
 

Solución al problema de los filósofos comensales con la biblioteca Asynchronous Agents

Escrito por Luix hace 6 meses bajo una licencia de Creative Commons Creative Commons License
577 visitas. Etiquetas: cpp, thread, msdn, concurrencia, dining-philosophers, filosofos-comensales

Los filósofos comensales

Empecemos repasando el problema de los filósofos comensales. Recordemos que este problema planteado por Djikstra planteaba una mesa a la cual se sienta un determinado número de filósofos que se pasan el tiempo pensando o comiendo, de forma alternativa, de un gran bol de arroz que se encuentra situado en el centro de la mesa. Para ello, los filósofos necesitan tomar un par de palillos, uno que se encuentra a su izquierda y otro a su derecha. El problema es que no hay palillos para todos, de manera que a cada lado de cada filósofo se encuentra solamente un palillo. Hasta que un filósofo no tiene los dos palillos no puede empezar a comer. Cuando un filósofo desea pensar, deja cada palillo a cada lado, y deja de comer. El problema del bloqueo mutuo en este planteamiento viene si todos los filósofos cogen uno de los palillos, puesto que jamás podrán coger el otro palillo, que está ocupado por otro filósofo, produciéndose una espera indefinida. ¿Cómo coordinamos a los filósofos para que puedan comer y pensar sin problema?

Cómo resolver el problema con Asynchronous Agents

En este problema, los filósofos serían hilos independientes que tratan de acceder a un recurso compartido, representado por los palillos. Cada filósofo solamente tiene constancia de los dos palillos que hay a ambos lados de su plato, siendo el resto invisibles para él.

Ver solución en:
http://luixrodriguezneches.wordpress.com/

Los detalles de la implementación de esta solución se encuentran en el artículo que se referencia debajo.
Referencias:

“Solving the Dining Philosophers Problem With Asynchronous Agents”
Rick Molloy
MSDN Magazine
June 2009

 

¡Votalo! 0 votos
¡Compártelo!

        

&nbps;

&nbps;

Luix

Sobre Luix

Ingeniero Informático por la Universidad de Valladolid (España). Me interesa la programación, gestión de proyectos, patrones, metodologías..., la seguridad y la administración de redes y sistemas operativos. Actualmente trabajo en Códice Software, una empresa vallisoletana que desarrolla PlasticSCM, una herramienta de control de versiones, además de consultoría a clientes sobre temas relacionados con la Gestión de Configuraciones. http://luixrodriguezneches.wordpress.com

 
Regístrate o haz login para participar.
¿Todavía no conoces debugmodeon?
debugmodeon es la red social para profesionales de la informática
descubre debugmodeon
 

 

© Copyright 2008-2009 debug_mode=ON | Aviso legal | Contacto | FAQ | ¿Quiénes somos? |