aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--philo/include/philo.h4
-rw-r--r--philo/src/main.c4
-rw-r--r--philo/src/simulation.c11
3 files changed, 11 insertions, 8 deletions
diff --git a/philo/include/philo.h b/philo/include/philo.h
index b4db15b..fbcf53f 100644
--- a/philo/include/philo.h
+++ b/philo/include/philo.h
@@ -6,7 +6,7 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/01/17 10:23:19 by dkaiser #+# #+# */
-/* Updated: 2025/01/18 16:57:23 by dkaiser ### ########.fr */
+/* Updated: 2025/01/18 17:09:50 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
@@ -51,6 +51,6 @@ typedef struct s_philo
t_phdata *data;
} t_philo;
-int run_simulation(int nbr_of_philos, t_philo *philos);
+int run_simulation(int nbr_of_philos, t_philo *philos, t_phdata *data);
#endif
diff --git a/philo/src/main.c b/philo/src/main.c
index be9e1b7..879bf0b 100644
--- a/philo/src/main.c
+++ b/philo/src/main.c
@@ -6,7 +6,7 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/01/14 17:13:30 by dkaiser #+# #+# */
-/* Updated: 2025/01/18 16:59:24 by dkaiser ### ########.fr */
+/* Updated: 2025/01/18 17:09:26 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
@@ -92,7 +92,7 @@ int main(int argc, char *argv[])
if (result != EXIT_SUCCESS)
return (result);
data.simulation_running = 1;
- result = run_simulation(data.nbr_of_philos, philos);
+ result = run_simulation(data.nbr_of_philos, philos, &data);
free(philos);
free(data.forks);
return (result);
diff --git a/philo/src/simulation.c b/philo/src/simulation.c
index 75bbe12..fa8e886 100644
--- a/philo/src/simulation.c
+++ b/philo/src/simulation.c
@@ -6,7 +6,7 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/01/17 14:38:04 by dkaiser #+# #+# */
-/* Updated: 2025/01/18 17:02:27 by dkaiser ### ########.fr */
+/* Updated: 2025/01/18 17:09:34 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
@@ -106,8 +106,6 @@ int *process_philo(void *arg)
{
pthread_mutex_lock(&philo->data->pme_mutex);
philo->data->philos_must_eat -= 1;
- if (philo->data->philos_must_eat <= 0)
- philo->data->simulation_running = 0;
pthread_mutex_unlock(&philo->data->pme_mutex);
}
if (!philo->data->simulation_running)
@@ -120,7 +118,7 @@ int *process_philo(void *arg)
return (result);
}
-int run_simulation(int nbr_of_philos, t_philo *philos)
+int run_simulation(int nbr_of_philos, t_philo *philos, t_phdata *data)
{
int i;
int result;
@@ -135,6 +133,11 @@ int run_simulation(int nbr_of_philos, t_philo *philos)
break;
i++;
}
+ while (data->simulation_running)
+ {
+ if (data->philos_must_eat <= 0)
+ data->simulation_running = 0;
+ }
while (i--)
{
pthread_join(philos[i].thread, &retval);