Skip to content

Eat, Sleep, Spaghetti, repeat. This project is about learning how threads work by precisely timing a group of philosophers on when to pick up forks and eat Spaghetti without dying from hunger.

Notifications You must be signed in to change notification settings

3umi/Philosophers_42

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub code size in bytes Number of lines of code Code language count GitHub top language GitHub last commit

Description

This program is a simulation of the dining philosophers problem

Overview

"./philo(_bonus)" <nb_of_philosopher> <time_to_die> <time_to_eat> <time_to_sleep> <number_of_times_each_philosopher_must_eat>

  • nb_of_philosopher : The number of philosophers and also the number of forks.

  • time_to_die (in milliseconds): If a philosopher didn’t start eating time_to_die milliseconds since the beginning of their last meal or the beginning of the simulation, they die.

  • time_to_eat (in milliseconds): The time it takes for a philosopher to eat. During that time, they will need to hold two forks.

  • time_to_sleep (in milliseconds): The time a philosopher will spend sleeping.

  • number_of_times_each_philosopher_must_eat (optional argument): If all philosophers have eaten at least number_of_times_each_philosopher_must_eat times, the simulation stops. If not specified, the simulation stops when a philosopher dies.

Features

./philo :

  • Multithreading
  • Mutexes

./philo_bonus :

  • Multiprocessing
  • Multithreading
  • Semaphores

Resources

The Linux Programming Interface by Michael Kerrisk :
https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnx0aGljaGhvY2l0fGd4OjRiZjExNjc4ZTAzMzcxOA

About

Eat, Sleep, Spaghetti, repeat. This project is about learning how threads work by precisely timing a group of philosophers on when to pick up forks and eat Spaghetti without dying from hunger.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published