An open API service indexing awesome lists of open source software.

https://github.com/mbah24-dev/philosophers

Le projet 42 Philosophers est une implémentation du célèbre problème des philosophes en C. Il met en jeu la gestion des threads, des mutex et des sémaphores pour assurer une synchronisation correcte et éviter les deadlocks.
https://github.com/mbah24-dev/philosophers

Last synced: about 1 year ago
JSON representation

Le projet 42 Philosophers est une implémentation du célèbre problème des philosophes en C. Il met en jeu la gestion des threads, des mutex et des sémaphores pour assurer une synchronisation correcte et éviter les deadlocks.

Awesome Lists containing this project

README

          

# 🏛️ Philosophers


philosophers 42 project badge

Le projet 42 Philosophers est une implémentation du célèbre problème des philosophes en C. Il met en jeu la gestion des threads, des mutex et des sémaphores pour assurer une synchronisation correcte et éviter les deadlocks.

🏛️ Le Problème


Cinq philosophes sont assis autour d'une table et passent leur temps à penser ou manger. Pour manger, ils doivent prendre deux fourchettes (une à gauche et une à droite). Chaque fourchette ne peut être utilisée que par un philosophe à la fois, ce qui pose des problèmes de synchronisation.

🔧 Fonctionnalités



  • ✅ Gestion efficace des threads (pthread)

  • ✅ Synchronisation avec mutex et sémaphores

  • ✅ Prévention du deadlock et famine

  • ✅ Simulation fluide et réaliste

🚀 Installation


# Cloner le repo

🎮 Utilisation


./philo <nombre_de_philosophes> <temps_pour_mourir> <temps_pour_manger> <temps_pour_penser> [nombre_de_repas]

Exemple :


./philo 5 800 200 200

Cela lance une simulation avec 5 philosophes, un temps de vie de 800ms, un temps pour manger de 200ms, et un temps pour penser de 200ms.

📜 Règles



  • Un philosophe meurt s'il ne mange pas à temps.

  • Les fourchettes sont partagées et doivent être prises dans le bon ordre.

  • Pas de deadlocks autorisés.

  • Une simulation correcte doit respecter ces contraintes sans comportements inattendus.

🛠️ Technologies



  • C (pthread, mutex, sémaphores)


  • Makefile pour la compilation

📖 Ressources utiles


📢 Contribuer


Les contributions sont les bienvenues ! Pour toute amélioration, ouvrez une issue ou soumettez une pull request.

📜 Licence


Ce projet est sous licence MIT. Vous êtes libre de l'utiliser et de le modifier.



🧠 "Manger pour penser, penser pour manger." 🍽️