Philosophers
Concurrence threads/mutex · le piège classique

Implémentation du problème classique des philosophes mangeurs en C avec pthreads et mutex. Chaque philosophe alterne entre manger, dormir et penser, tout en partageant des fourchettes avec ses voisins. Le programme doit respecter les timings et détecter précisément lorsqu’un philosophe meurt de faim.
Le sujet paraît petit, mais il concentre beaucoup de problèmes de concurrence : accès partagés, ordre de verrouillage, prévention des deadlocks, synchronisation des logs, mesure du temps, arrêt propre des threads et absence de data races. Une solution qui marche sur un cas simple peut devenir instable dès que les timings changent.
Ce projet force à écrire du code très sobre et prévisible. Il ne suffit pas que le programme affiche les bonnes lignes une fois : il doit rester correct sous charge, avec plusieurs philosophes, sur des durées variables, sans boucle active inutile ni verrou bloqué.


