Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/raveriss/philo
Multithreading simulation project where philosophers dine, think, and sleep while avoiding death by starvation. It's an exploration of process threading, mutexes, and the dining philosophers problem in C. This project provides practical experience with the challenges of synchronizing threads and processes to achieve a common goal
https://github.com/raveriss/philo
c-programming concurrency dining-philosophers multithreading mutexes process-management synchronization
Last synced: 4 days ago
JSON representation
Multithreading simulation project where philosophers dine, think, and sleep while avoiding death by starvation. It's an exploration of process threading, mutexes, and the dining philosophers problem in C. This project provides practical experience with the challenges of synchronizing threads and processes to achieve a common goal
- Host: GitHub
- URL: https://github.com/raveriss/philo
- Owner: raveriss
- Created: 2023-10-05T17:32:02.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-13T23:58:58.000Z (10 months ago)
- Last Synced: 2024-11-14T05:19:38.109Z (2 months ago)
- Topics: c-programming, concurrency, dining-philosophers, multithreading, mutexes, process-management, synchronization
- Language: C
- Homepage:
- Size: 727 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# **Projet Philosophers**
##
##
## Description
Ce projet est une implémentation du problème des philosophes à l'aide de la programmation multithreadée et la gestion de mutex en C. Le but est de résoudre les problèmes de concurrence comme les conditions de course, les deadlocks et les famines.## Tableau des Composants du Projet
| Fichier | Description | Responsabilité | Statut |
|---------------------|-------------------------------------------------------------------------|-------------------------------------------------|-----------|
| `philo.c` | Fichier principal, contient la logique de haut niveau | Initialisation, gestion des threads | Complet |
| `init.c` | Initialise les structures et les variables | Initialisation | Complet |
| `life.c` | Gère la vie des philosophes | Manger, dormir, penser | Complet |
| `check_death.c` | Vérifie si un philosophe est mort | Surveillance de la mort | Complet |
| `philo_utils.c` | Fonctions utilitaires | Fonctions auxiliaires | Complet |
| `ft_atol.c` | Conversion de chaîne à long int | Conversion de types | Complet |
| `clean.c` | Nettoie les ressources avant de quitter le programme | Nettoyage | Complet |
| `Makefile` | Fichier pour compiler le projet | Compilation | Complet |
| `philo.h` | Fichier d'en-tête contenant les déclarations et les macros | Déclarations | Complet |## Installation et Compilation
```
git clone [email protected]:Omisev/philo.git
cd philo
make
```## Utilisation
```
./philo 2 400 100 100 5
```## Caractéristiques
Gestion de la concurrence avec pthread et mutex
Robustesse et absence de fuites de mémoire
Respect des normes de l'école 42## Fonctions externes autorisées
memset
printf
malloc
free
write
usleep
gettimeofday
pthread_create
pthread_detach
pthread_join
pthread_mutex_init
pthread_mutex_destroy
pthread_mutex_lock
pthread_mutex_unlockAuteur
raveriss