summaryrefslogtreecommitdiff
path: root/src/destroy.c
diff options
context:
space:
mode:
authoryctct <yctct@yctct.com>2026-09-13 18:58:14 +0200
committeryctct <yctct@yctct.com>2026-09-13 18:58:14 +0200
commit47beba686ff9d2aab63738fba7176a5235703d05 (patch)
treef839ed36a9e9d4476fcdc59379b17903abfa35c8 /src/destroy.c
Add all files, first commit
Diffstat (limited to 'src/destroy.c')
-rw-r--r--src/destroy.c66
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);
+}