No podría faltar este problema (en su versión de C). El problema de la cena de los filósofos cenando. Para que cada filósofo pueda comer deben de tener en sus manos los dos tenedores (izquierdo y derecho). Cada filósofo pensará durante un rato. A continuación, agarrarán el tenedor izquierdo y luego el derecho. Luego comerán. Al terminar de comer volverán a dejar los tenedores en la mesa. Cuando todos los filósofos terminan de comer, concluyen que la vida es maravillosa ♥
Este proyecto simula el problema de los filósofos comensales utilizando hilos y mutexes. El objetivo es modelar el ciclo de vida de filósofos que intentan comer mientras evitan el hambre y el bloqueo, con el sistema asegurando la sincronización adecuada entre hilos.
Argumentos:
- number_of_philosophers: El número de filósofos (y tenedores) involucrados en la simulación.
- time_to_die (en ms): Si un filósofo no comienza a comer dentro de time_to_die ms desde el inicio de su última comida o desde el inicio de la simulación, morirá.
- time_to_eat (en ms): El tiempo que un filósofo necesita para comer. Durante este tiempo, ocupará dos tenedores.
- time_to_sleep (en ms): El tiempo que un filósofo pasa durmiendo.
- number_of_times_each_philosopher_must_eat (opcional): Si se establece, la simulación se detendrá una vez que cada filósofo haya comido al menos este número de veces. Si no se proporciona, la simulación termina cuando un filósofo muere.
Flujo del Programa:
Cada filósofo recibe un número del 1 al número de filósofos.
El filósofo numerado como 1 se sienta junto al filósofo numerado como number_of_philosophers, mientras que los demás se sientan entre los filósofos numerados como N-1 y N+1.