From 6496eb33997091bc6f22191488d055dd64a978fc Mon Sep 17 00:00:00 2001 From: Dominik Kaiser Date: Sat, 18 Jan 2025 12:29:19 +0100 Subject: [PATCH] Add eating to simulation --- philo/src/main.c | 3 ++- philo/src/simulation.c | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/philo/src/main.c b/philo/src/main.c index 1a07271..46d1050 100644 --- a/philo/src/main.c +++ b/philo/src/main.c @@ -6,7 +6,7 @@ /* By: dkaiser data->forks[philo->id]; + right_fork = &philo->data->forks[(philo->id + 1) % philo->data->nbr_of_philos]; + if (left_fork->available && right_fork->available) + { + pthread_mutex_lock(&left_fork->mutex); + pthread_mutex_lock(&right_fork->mutex); + left_fork->available = 0; + right_fork->available = 0; + printf("Philo %d is eating\n", philo->id); + usleep(1000000); + left_fork->available = 1; + right_fork->available = 1; + pthread_mutex_unlock(&left_fork->mutex); + pthread_mutex_unlock(&right_fork->mutex); + } + return (EXIT_SUCCESS); +} + +int *process_philo(void *arg) { t_philo *philo; int *result; @@ -21,8 +44,14 @@ int *process_philo(__attribute__((unused)) void *arg) if (result == NULL) return (NULL); philo = (t_philo *)arg; - printf("Processing philo %d\n", philo->id); *result = EXIT_SUCCESS; + while (philo->data->simulation_running) + { + *result = eat(philo); + printf("Philo %d is sleeping\n", philo->id); + usleep(1000000); + //think + } return (result); } -- 2.47.2