#include "codexion.h" static void destroy_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_destroy(&philo->mutex_number_of_eats_done); (void)pthread_mutex_destroy(&philo->mutex_beginning_last_eat_time); (void)pthread_mutex_destroy(&philo->mutex_id); (void)pthread_mutex_destroy(&philo->mutex_sim); } } static void destroy_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_destroy(&fork->mutex); (void)pthread_mutex_destroy(&fork->mutex_last_released); (void)pthread_mutex_destroy(&fork->mutex_right_philo); (void)pthread_mutex_destroy(&fork->mutex_left_philo); (void)pthread_mutex_destroy(&fork->mutex_ticket_next); (void)pthread_mutex_destroy(&fork->mutex_cond); (void)pthread_mutex_destroy(&fork->mutex_sim); (void)pthread_cond_destroy(&fork->cond_signal); (void)pthread_mutex_destroy(&fork->mutex_pq); } } static void destroy_mutex_sim(t_sim *sim) { (void)pthread_mutex_destroy(&sim->mutex_philo_starved); (void)pthread_mutex_destroy(&sim->mutex_print_log); (void)pthread_mutex_destroy(&sim->mutex_cooldown); (void)pthread_mutex_destroy(&sim->mutex_start_time); (void)pthread_mutex_destroy(&sim->mutex_number_of_eat_required); (void)pthread_mutex_destroy(&sim->mutex_philos); (void)pthread_mutex_destroy(&sim->mutex_number_of_philos); (void)pthread_mutex_destroy(&sim->mutex_time_to_starve); (void)pthread_mutex_destroy(&sim->mutex_time_to_think); (void)pthread_mutex_destroy(&sim->mutex_time_to_reflect); (void)pthread_mutex_destroy(&sim->mutex_time_to_eat); (void)pthread_mutex_destroy(&sim->mutex_scheduler); (void)pthread_mutex_destroy(&sim->mutex_forks); } void destroy_mutex(t_sim *sim) { destroy_mutex_philos(sim); destroy_mutex_forks(sim); destroy_mutex_sim(sim); }