okbrandon / philosophers

🍽️ dining philosophers problem in C.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

🍽️ philosophers

Philosophers is a 42 school project that consists in creating a program that reproduce the dining philosophers problem.

Top used language Norminette run GitHub last commit

πŸ“š Table of Contents

πŸ‘¨β€πŸ« Demonstration

Screen.Recording.2023-04-27.at.5.49.19.PM.mov

Running simulation with 5 philosophers. ./philo 5 800 200 200

πŸ“¦ Installation

Clone the repository from GitHub:

git clone https://github.com/okbrandon/philosophers.git

Compile the philo executable:

cd philo/ && make

Compile the philo_bonus executable:

cd philo_bonus/ && make

πŸ“ Usage

Run the mandatory program:

./philo <num_of_philo> <time_to_die> <time_to_eat> <time_to_sleep> [<must_eat>]

First parameter is how much philosophers you want, the second one is after how many millis they should die after their last meal, the third one is the time they take to eat in millis, same for the forth parameter. The last one is optional and represent how many times each philosopher should eat at least.

Run the bonus program:

./philo_bonus <num_of_philo> <time_to_die> <time_to_eat> <time_to_sleep> [<must_eat>]

Same as above.

πŸ“ Example

Valid simulation:

$> ./philo 5 800 200 200
0           1 has taken a fork
0           3 has taken a fork
0           3 has taken a fork
0           3 is eating
0           1 has taken a fork
0           1 is eating
0           5 has taken a fork
200         4 has taken a fork
200         3 is sleeping
200         5 has taken a fork
200         5 is eating
200         1 is sleeping
200         2 has taken a fork
200         2 has taken a fork
200         2 is eating
[...]

Invalid simulation:

$> ./philo 5 400 200 200
0           1 has taken a fork
0           1 has taken a fork
0           1 is eating
0           3 has taken a fork
0           3 has taken a fork
0           5 has taken a fork
0           3 is eating
200         3 is sleeping
200         5 has taken a fork
200         5 is eating
200         1 is sleeping
200         4 has taken a fork
200         2 has taken a fork
200         2 has taken a fork
200         2 is eating
400         3 is thinking
400         3 has taken a fork
400         2 is sleeping
400         5 is sleeping
400         1 is thinking
400         1 has taken a fork
400         4 has taken a fork
400         4 is eating
400         1 died

The bonus program has the same output as the mandatory one. The only difference is that the mandatory uses mutexes and the bonus one semaphores.

⬆ Back to Top

🌏 Meta

bsoubaig – bsoubaig@student.42nice.fr

About

🍽️ dining philosophers problem in C.


Languages

Language:C 85.5%Language:Makefile 14.5%