From: Dominik Kaiser Date: Sat, 18 Jan 2025 12:04:57 +0000 (+0100) Subject: Add time_to_eat and time_to_sleep X-Git-Url: https://git.dkaiser.de/?a=commitdiff_plain;h=f38b5cc6975fc2126f4a09f8417cfba5cbcd845c;p=42%2FPhilosophers.git Add time_to_eat and time_to_sleep --- 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)