From 0813f4153af4723d3fddffea6926243f3a94fa57 Mon Sep 17 00:00:00 2001 From: Dominik Kaiser Date: Sat, 18 Jan 2025 17:11:11 +0100 Subject: [PATCH] Outsource checking for philos_must_eat to main thread --- philo/include/philo.h | 4 ++-- philo/src/main.c | 4 ++-- philo/src/simulation.c | 11 +++++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/philo/include/philo.h b/philo/include/philo.h index b4db15b..fbcf53f 100644 --- a/philo/include/philo.h +++ b/philo/include/philo.h @@ -6,7 +6,7 @@ /* By: dkaiser data->pme_mutex); philo->data->philos_must_eat -= 1; - if (philo->data->philos_must_eat <= 0) - philo->data->simulation_running = 0; pthread_mutex_unlock(&philo->data->pme_mutex); } if (!philo->data->simulation_running) @@ -120,7 +118,7 @@ int *process_philo(void *arg) return (result); } -int run_simulation(int nbr_of_philos, t_philo *philos) +int run_simulation(int nbr_of_philos, t_philo *philos, t_phdata *data) { int i; int result; @@ -135,6 +133,11 @@ int run_simulation(int nbr_of_philos, t_philo *philos) break; i++; } + while (data->simulation_running) + { + if (data->philos_must_eat <= 0) + data->simulation_running = 0; + } while (i--) { pthread_join(philos[i].thread, &retval); -- 2.47.2