From f38b5cc6975fc2126f4a09f8417cfba5cbcd845c Mon Sep 17 00:00:00 2001 From: Dominik Kaiser Date: Sat, 18 Jan 2025 13:04:57 +0100 Subject: [PATCH] Add time_to_eat and time_to_sleep --- philo/include/ft_utils.h | 4 ++-- philo/src/ft_utils.c | 8 ++++---- philo/src/simulation.c | 22 +++++++++++++++++++--- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/philo/include/ft_utils.h b/philo/include/ft_utils.h index 19fa2ea..fb0455e 100644 --- a/philo/include/ft_utils.h +++ b/philo/include/ft_utils.h @@ -6,7 +6,7 @@ /* By: dkaiser data->forks[philo->id]; right_fork = &philo->data->forks[(philo->id + 1) % philo->data->nbr_of_philos]; @@ -29,8 +31,13 @@ void philo_eat(t_philo *philo) ft_log(philo->id, "has taken a fork"); right_fork->available = 0; ft_log(philo->id, "has taken a fork"); + started_eating = ft_cur_time_in_ms(); + tte = philo->data->time_to_eat; ft_log(philo->id, "is eating"); - usleep(1000000); + while (ft_cur_time_in_ms() < started_eating + tte) + { + usleep(1000); + } left_fork->available = 1; right_fork->available = 1; pthread_mutex_unlock(&left_fork->mutex); @@ -39,8 +46,17 @@ void philo_eat(t_philo *philo) void philo_sleep(t_philo *philo) { + int started_sleeping; + int tts; + + started_sleeping = ft_cur_time_in_ms(); + tts = philo->data->time_to_sleep; ft_log(philo->id, "is sleeping"); - usleep(1000000); + while (ft_cur_time_in_ms() < started_sleeping + tts) + { + + usleep(1000); + } } void philo_think(t_philo *philo) -- 2.47.2