#include "codexion.h" static void init_mutex_philos(t_sim *sim) { t_philo **philos; t_philo *philo; int number_of_philos; number_of_philos = sim->number_of_philos; philos = sim->philos; while (number_of_philos-- > 0) { philo = *philos++; (void)pthread_mutex_init(&philo->mutex_number_of_eats_done, NULL); (void)pthread_mutex_init(&philo->mutex_beginning_last_eat_time, NULL); (void)pthread_mutex_init(&philo->mutex_id, NULL); (void)pthread_mutex_init(&philo->mutex_sim, NULL); } } static void init_mutex_forks(t_sim *sim) { t_fork **forks; t_fork *fork; int number_of_philos; number_of_philos = sim->number_of_philos; forks = sim->forks; while (number_of_philos-- > 0) { fork = *forks++; (void)pthread_mutex_init(&fork->mutex, NULL); (void)pthread_mutex_init(&fork->mutex_last_released, NULL); (void)pthread_mutex_init(&fork->mutex_left_philo, NULL); (void)pthread_mutex_init(&fork->mutex_right_philo, NULL); (void)pthread_mutex_init(&fork->mutex_ticket_next, NULL); (void)pthread_mutex_init(&fork->mutex_cond, NULL); (void)pthread_mutex_init(&fork->mutex_sim, NULL); (void)pthread_cond_init(&fork->cond_signal, NULL); (void)pthread_mutex_init(&fork->mutex_pq, NULL); } } static void init_mutex_sim(t_sim *sim) { (void)pthread_mutex_init(&sim->mutex_philo_starved, NULL); (void)pthread_mutex_init(&sim->mutex_print_log, NULL); (void)pthread_mutex_init(&sim->mutex_cooldown, NULL); (void)pthread_mutex_init(&sim->mutex_start_time, NULL); (void)pthread_mutex_init(&sim->mutex_number_of_eat_required, NULL); (void)pthread_mutex_init(&sim->mutex_philos, NULL); (void)pthread_mutex_init(&sim->mutex_number_of_philos, NULL); (void)pthread_mutex_init(&sim->mutex_time_to_starve, NULL); (void)pthread_mutex_init(&sim->mutex_time_to_think, NULL); (void)pthread_mutex_init(&sim->mutex_time_to_reflect, NULL); (void)pthread_mutex_init(&sim->mutex_time_to_eat, NULL); (void)pthread_mutex_init(&sim->mutex_scheduler, NULL); (void)pthread_mutex_init(&sim->mutex_forks, NULL); } void init_mutex(t_sim *sim) { init_mutex_philos(sim); init_mutex_forks(sim); init_mutex_sim(sim); }