Vinicius Oliveira

Philosophers

Simulação do jantar dos filósofos de Dijkstra.

École 422022
CUnixThreads

Projeto introdutório sobre threads em C para École 42, inspirado no problema do jantar dos filósofos de Edsger Dijkstra.

O problema consiste em simular um jantar com um número arbitrário de filósofos sentados em uma mesa redonda. Cada filósofo tem um prato de espaguete à sua frente e há um garfo entre cada par de pratos. Os filósofos alternam entre três estados: pensando, comendo e dormindo. Para comer, um filósofo precisa pegar os dois garfos ao seu lado. Se um garfo estiver ocupado, o filósofo deve esperar até que ambos estejam disponíveis. O objetivo é evitar deadlock (bloqueio mútuo) ou starvation (inanição).

É possível configurar a simulação com diferentes parâmetros, como o número de filósofos, o tempo de vida máximo de cada filósofo, o tempo de comer e dormir de cada filósofo, além do número máximo de refeições que cada filósofo pode fazer. A simulação é finalizada quando todos os filósofos completam o número máximo de refeições ou quando um filósofo morre.