]> git.dkaiser.de - 42/Philosophers.git/commitdiff
Destroy Mutexes
authorDominik Kaiser <dkaiser@3-F-5.42heilbronn.de>
Tue, 28 Jan 2025 13:29:21 +0000 (14:29 +0100)
committerDominik Kaiser <dkaiser@3-F-5.42heilbronn.de>
Tue, 28 Jan 2025 13:29:21 +0000 (14:29 +0100)
philo/include/philo.h
philo/src/init.c
philo/src/main.c

index ef5565e9e670715c181261bb6867549672f4b18d..ca0440ee93459374fcb04e9db14876d7c6057ec1 100644 (file)
@@ -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);
index 1afa104c4484bad23c492e6b5bb2486d3dc20595..ae413c30eee9a0563ab9d3839bfc5a892590248e 100644 (file)
@@ -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);
index c92879597d415010070ca856dc35d181efb819e2..85bd230294611fc214ea04d6a78be860dc9d4df8 100644 (file)
@@ -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);
 }