This is a classic task that provides an understanding of Process synchronization, work with threads.
• One or more philosophers are sitting at a round table doing one of three things:
eating, thinking, or sleeping.
• While eating, they are not thinking or sleeping, while sleeping, they are not eating
or thinking and of course, while thinking, they are not eating or sleeping.
• The philosophers sit at a circular table with a large bowl of spaghetti in the center.
• There are some forks on the table.
• As spaghetti is difficult to serve and eat with a single fork, it is assumed that a
philosopher must eat with two forks, one for each hand.
• The philosophers must never be starving.
• Every philosopher needs to eat.
• Philosophers don’t speak with each other.
• Philosophers don’t know when another philosopher is about to die.
• Each time a philosopher has finished eating, he will drop his forks and start sleeping.
• When a philosopher is done sleeping, he will start thinking.
• The simulation stops when a philosopher dies.
- make - compiling
- make clean - clean *.o
- make fcleen - clean all
- make re - recompiling
- number_of_philosophers
- time_to_die time_to_eat
- time_to_sleep
- number_of_times_each_philosopher_must_eat
- ./philo 5 800 200 200 - no one should die!
- ./philo 5 800 200 200 7 - no one should die and the simulation should stop when all the philosopher has eaten
atleast 7 times each.
- ./philo 4 410 200 200 - no one should die!
- ./philo 4 310 200 100 - a philosopher should die!
- Do not test with more than 200 philosophers
- Do not test with time_to_die or time_to_eat or time_to_sleep under 60 ms - Test with 1 800 200 200, the philosopher should not eat and should die!
Actual Status : finished. Result : 100%
This is my philosopher's project from the 42 cursus. Have questions? Write me.