From 958154ea02f1dfc65048abdabff3aaa4ceffbcc0 Mon Sep 17 00:00:00 2001 From: Lukas Jiriste Date: Thu, 9 May 2024 12:42:34 +0200 Subject: [PATCH] Further change cleanup order 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 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/philo/mem_management.c b/philo/mem_management.c index ea3c851..c459048 100644 --- a/philo/mem_management.c +++ b/philo/mem_management.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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); -- 2.30.2