From: Dominik Kaiser Date: Sat, 18 Jan 2025 11:29:19 +0000 (+0100) Subject: Add eating to simulation X-Git-Url: https://git.dkaiser.de/?a=commitdiff_plain;h=6496eb33997091bc6f22191488d055dd64a978fc;p=42%2FPhilosophers.git Add eating to simulation --- 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); }