Further change cleanup order
authorLukas Jiriste <ljiriste@student.42prague.com>
Thu, 9 May 2024 10:42:34 +0000 (12:42 +0200)
committerLukas Jiriste <ljiriste@student.42prague.com>
Thu, 9 May 2024 10:42:34 +0000 (12:42 +0200)
To make helgrind errors disappear, delete every mutex shared between
threads only after joining all the threads. This ensures that
no thread can access a mutex after the removal of the mutex because
no thread exists then.

philo/mem_management.c

index ea3c851f5ef3f1713f3d06a8dd94499c6e08c169..c4590485ac9124c72e80afa35996d13ba892b832 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: ljiriste <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/03/28 09:39:55 by ljiriste          #+#    #+#             */
-/*   Updated: 2024/05/09 11:56:50 by ljiriste         ###   ########.fr       */
+/*   Updated: 2024/05/09 12:41:33 by ljiriste         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -51,8 +51,6 @@ void  cleanup(t_diner *diner, pthread_t *threads)
        const size_t    count = diner->setting.philo_count;
        size_t                  i;
 
-       destroy_mutex(&diner->setting.terminal_lock);
-       destroy_mutex(&diner->setting.end_lock);
        i = 0;
        if (diner->philos)
        {
@@ -66,6 +64,8 @@ void  cleanup(t_diner *diner, pthread_t *threads)
        if (diner->forks)
                while (i < count)
                        destroy_mutex(diner->forks + (i++));
+       destroy_mutex(&diner->setting.terminal_lock);
+       destroy_mutex(&diner->setting.end_lock);
        free(diner->philos);
        free(diner->forks);
        free(threads);