From 36b5b44ffc26e4afca41bb589dbc36e38bc701a1 Mon Sep 17 00:00:00 2001 From: Fufu Fang Date: Fri, 6 Dec 2024 01:18:34 +0000 Subject: [PATCH] improved locks --- src/cache.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/cache.c b/src/cache.c index e03cc28..d9fd5ff 100644 --- a/src/cache.c +++ b/src/cache.c @@ -554,18 +554,24 @@ static void Cache_free(Cache *cf) { int err_code = 0; + PTHREAD_MUTEX_LOCK(&cf->seek_lock); + PTHREAD_MUTEX_UNLOCK(&cf->seek_lock); err_code = pthread_mutex_destroy(&cf->seek_lock); if (err_code) { lprintf(fatal, "could not destroy seek_lock: %d, %s!\n", err_code, strerror(err_code)); } + PTHREAD_MUTEX_LOCK(&cf->w_lock); + PTHREAD_MUTEX_UNLOCK(&cf->w_lock); err_code = pthread_mutex_destroy(&cf->w_lock); if (err_code) { lprintf(fatal, "could not destroy w_lock: %d, %s!\n", err_code, strerror(err_code)); } + PTHREAD_MUTEX_LOCK(&cf->bgt_lock); + PTHREAD_MUTEX_UNLOCK(&cf->bgt_lock); err_code = pthread_mutex_destroy(&cf->bgt_lock); if (err_code) { lprintf(fatal, "could not destroy bgt_lock: %d, %s!\n", err_code, @@ -977,8 +983,8 @@ void Cache_close(Cache *cf) lprintf(cache_lock_debug, "thread %x: unlocking cf_lock, cache closed: %s\n", pthread_self(), cf->path); - PTHREAD_MUTEX_UNLOCK(&cf_lock); Cache_free(cf); + PTHREAD_MUTEX_UNLOCK(&cf_lock); } /**