Este es un programa en C que resuelve el clásico problema de los filósofos, una ilustración común de un problema de concurrencia en sistemas operativos y programación paralela. En este problema, un número fijo de filósofos se sientan alrededor de una mesa con un plato de espaguetis. Entre cada par de filósofos hay un tenedor, y para comer, un filósofo necesita tomar ambos tenedores a su izquierda y derecha.
Sin embargo, los filósofos solo pueden realizar tres acciones: comer, dormir o pensar. No pueden hablar entre sí y solo pueden tomar los tenedores que están directamente a su izquierda y derecha. Esto da lugar a una situación en la que los filósofos pueden quedar atrapados si cada uno toma el tenedor a su izquierda al mismo tiempo, ya que todos estarán esperando el tenedor de la derecha.
El programa en C utiliza mutex
para evitar el acceso mutuo a recursos y garantizar que los filósofos puedan comer de manera segura sin resultados inesperados.
make
.PHONY: clean fclean all re
Arg[1] = Número de filósofos * ( 0 - 200 )
Arg[2] = Tiempo para morir *
Arg[3] = Tiempo para comer *
Arg[4] = Tiempo para dormir *
Arg[5] = Número de comidas ( Opcional )
./philo 5 800 200 200
./philo 5 800 200 200 5