diff options
| author | yctct <yctct@yctct.com> | 2026-09-13 18:58:14 +0200 |
|---|---|---|
| committer | yctct <yctct@yctct.com> | 2026-09-13 18:58:14 +0200 |
| commit | 47beba686ff9d2aab63738fba7176a5235703d05 (patch) | |
| tree | f839ed36a9e9d4476fcdc59379b17903abfa35c8 /src/destroy.c | |
Add all files, first commit
Diffstat (limited to 'src/destroy.c')
| -rw-r--r-- | src/destroy.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/destroy.c b/src/destroy.c new file mode 100644 index 0000000..6a274ad --- /dev/null +++ b/src/destroy.c @@ -0,0 +1,66 @@ +#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); +} |
