/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* philosophers.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/16 14:03:01 by narnaud #+# #+# */ /* Updated: 2022/05/16 14:03:20 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef PHILOSOPHERS_H # define PHILOSOPHERS_H /* • Chaque philosophe doit être représenté par un thread. • Toutes les fourchettes sont au centre de la table. • Elles n’ont pas d’état spécifique en mémoire, mais le nombre de fourchettes disponibles est représenté par un sémaphore. • Chaque philosophe est représenté par un processus différent. Cependant, le processus principal ne doit pas être un philosophe. */ # include # include # include # include # include # include # include # include # include # include # include # include typedef struct s_table t_table; typedef struct s_philo { int id; size_t meals_done; size_t last_meal_time; t_table *table; } t_philo; typedef struct s_table { size_t nb_of_philos; size_t time_to_die; size_t eating_time; size_t sleeping_time; size_t nb_of_meal; int i; sem_t *sptr; sem_t *death; t_philo *philos; size_t time; size_t start_time; int *pid; } t_table; /***************************/ t_table *parsing(char **argv); size_t gettime(void); #endif