From a60a339141a2316b035b1988bc8586d57c1ed495 Mon Sep 17 00:00:00 2001 From: kinou-p Date: Thu, 2 Oct 2025 10:18:32 +0200 Subject: [PATCH] docs: add comprehensive README for dining philosophers simulation project --- README.md | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..5f03ca2 --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# Philosophers + +## Description +Philosophers est un projet de l'École 42 basé sur le célèbre problème des philosophes mangeurs. Il traite de la programmation concurrente avec des threads et des mutex pour éviter les deadlocks et les race conditions. + +## Le problème +5 philosophes sont assis autour d'une table circulaire avec un plat de spaghetti au centre. Il y a une fourchette entre chaque philosophe. Pour manger, un philosophe doit prendre les deux fourchettes adjacentes. + +## Fonctionnalités +- **Simulation temps réel** avec threads +- **Gestion des mutex** pour les fourchettes +- **Prévention des deadlocks** +- **Monitoring** de l'état des philosophes +- **Optimisation** pour éviter la famine +- **Logs timestampés** des actions + +## Technologies utilisées +- **Langage** : C +- **Threading** : pthread library +- **Synchronisation** : mutex, semaphores +- **Timing** : gettimeofday() + +## Installation +```bash +git clone +cd Philosophers +make +./philo [nb_philo] [time_to_die] [time_to_eat] [time_to_sleep] [nb_must_eat] +``` + +## Exemple d'utilisation +```bash +./philo 5 800 200 200 3 +# 5 philosophes, meurent après 800ms, mangent en 200ms, dorment 200ms, 3 repas chacun +``` + +## États des philosophes +- 🍴 **Eating** - En train de manger +- 😴 **Sleeping** - En train de dormir +- 🤔 **Thinking** - En train de réfléchir +- ⚰️ **Died** - Mort de faim + +## Défis techniques +- **Race conditions** entre threads +- **Deadlocks** avec les fourchettes +- **Starvation** d'un philosophe +- **Performance** et optimisation + +## Compétences développées +- Programmation concurrente +- Synchronisation de threads +- Résolution de problèmes classiques CS +- Debugging multi-threadé + +## Auteur +Alexandre Pommier (apommier) - École 42 \ No newline at end of file