This project handles the basics of threading a process, how to work on the same memory space and how to make threads. This project will discover the mutex, semaphore and shared memory.
Implement Dining philosophers problem in THREE different way!
philosopher with threads and mutex
- One fork between each philosopher, therefore there will be a fork at the right and at the left of each philosopher.
- To avoid philosophers duplicating forks, you should protect the forks state with a mutex for each of them.
- Each philosopher should be a thread.
philosopher with threads and semaphore
- All the forks are in the middle of the table.
- They have no states in memory but the number of available forks is represented by a semaphore.
- Each philosopher should be a thread.
philosopher with processes and semaphore
- All the forks are in the middle of the table.
- They have no states in memory but the number of available forks is represented by a semaphore.
- Each philosopher should be a process and the main process should not be a philosopher.
$ cd philo_x
$ make
$ ./philo_x number_of_philosophers time_to_die time_to_eat time_to_sleep [number_of_times_each_philosopher_must_eat]