aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--philo/include/philo.h3
-rw-r--r--philo/src/init.c6
-rw-r--r--philo/src/main.c20
3 files changed, 23 insertions, 6 deletions
diff --git a/philo/include/philo.h b/philo/include/philo.h
index ef5565e..ca0440e 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/28 13:34:48 by dkaiser ### ########.fr */
+/* Updated: 2025/01/28 14:26:14 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
@@ -53,6 +53,7 @@ typedef struct s_philo
} t_philo;
int init(t_philo **philos, t_phdata *data);
+void free_data(t_phdata *data);
int run_simulation(int nbr_of_philos, t_philo *philos,
t_phdata *data);
int philo_die(t_philo *philo);
diff --git a/philo/src/init.c b/philo/src/init.c
index 1afa104..ae413c3 100644
--- a/philo/src/init.c
+++ b/philo/src/init.c
@@ -6,7 +6,7 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/01/28 13:12:57 by dkaiser #+# #+# */
-/* Updated: 2025/01/28 13:25:15 by dkaiser ### ########.fr */
+/* Updated: 2025/01/28 14:28:58 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
@@ -33,14 +33,14 @@ int init(t_philo **philos, t_phdata *data)
if (result != 0)
{
free(*philos);
- free(data->forks);
+ free_data(data);
return (result);
}
result = pthread_mutex_init(&data->sr_mutex, NULL);
if (result != 0)
{
free(*philos);
- free(data->forks);
+ free_data(data);
return (result);
}
result = init_philos(philos, data);
diff --git a/philo/src/main.c b/philo/src/main.c
index c928795..85bd230 100644
--- a/philo/src/main.c
+++ b/philo/src/main.c
@@ -6,11 +6,12 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/01/14 17:13:30 by dkaiser #+# #+# */
-/* Updated: 2025/01/28 13:49:55 by dkaiser ### ########.fr */
+/* Updated: 2025/01/28 14:25:27 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
#include "philo.h"
+#include <pthread.h>
int load_data(t_phdata *data, int argc, char *argv[])
{
@@ -38,6 +39,21 @@ int load_data(t_phdata *data, int argc, char *argv[])
return (EXIT_SUCCESS);
}
+void free_data(t_phdata *data)
+{
+ int i;
+
+ i = 0;
+ while (i < data->nbr_of_philos)
+ {
+ pthread_mutex_destroy(&data->forks[i].mutex);
+ i++;
+ }
+ free(data->forks);
+ pthread_mutex_destroy(&data->pme_mutex);
+ pthread_mutex_destroy(&data->sr_mutex);
+}
+
int main(int argc, char *argv[])
{
t_phdata data;
@@ -54,6 +70,6 @@ int main(int argc, char *argv[])
return (result);
result = run_simulation(data.nbr_of_philos, philos, &data);
free(philos);
- free(data.forks);
+ free_data(&data);
return (result);
}