diff options
Diffstat (limited to 'philo')
| -rw-r--r-- | philo/include/philo.h | 3 | ||||
| -rw-r--r-- | philo/src/init.c | 6 | ||||
| -rw-r--r-- | philo/src/main.c | 20 |
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); } |
