From 80246160a3cc26370ba414ff9458883783d06ed6 Mon Sep 17 00:00:00 2001 From: Lukas Jiriste Date: Fri, 24 May 2024 08:46:45 +0200 Subject: [PATCH] Implement is_alive function Also use it in print_timestamp so that the "philosopher died" message is the last one. --- philo_bonus/helpers.c | 21 +++++++++++++++++---- philo_bonus/philo.h | 1 + 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/philo_bonus/helpers.c b/philo_bonus/helpers.c index fd44d42..02c3e97 100644 --- a/philo_bonus/helpers.c +++ b/philo_bonus/helpers.c @@ -23,11 +23,24 @@ useconds_t usecs_since_start(struct timeval start) + time.tv_usec - start.tv_usec); } +int is_alive(t_philo *philo) +{ + int res; + + sem_wait(philo->philo_sem); + res = philo->lives; + sem_post(philo->philo_sem); + return (res); +} + void print_timestamp(t_philo *philo, const char *str) { - sem_wait(philo->semaphores[term]); - printf("%u %u %s\n", usecs_since_start(philo->settings.start) - / 1000, philo->id, str); - sem_post(philo->semaphores[term]); + if (is_alive(philo)) + { + sem_wait(philo->semaphores[term]); + printf("%u %u %s\n", usecs_since_start(philo->settings.start) + / 1000, philo->id, str); + sem_post(philo->semaphores[term]); + } return ; } diff --git a/philo_bonus/philo.h b/philo_bonus/philo.h index 8b3a1d6..1f114a8 100644 --- a/philo_bonus/philo.h +++ b/philo_bonus/philo.h @@ -72,6 +72,7 @@ void cleanup(pid_t *philo_pids, sem_t *semaphores[sem_num]); useconds_t usecs_since_start(struct timeval start); int report(t_philo *philo, const char *str); +int is_alive(t_philo *philo); void print_timestamp(t_philo *philo, const char *str); void be_a_philosopher(t_philo *philo); -- 2.30.2