From be08289b27feacec70aa9c0e006498458e481515 Mon Sep 17 00:00:00 2001 From: Test_User Date: Wed, 2 Oct 2024 23:31:00 -0400 Subject: Avoid needless locking when attempting to unlock, instead check the value directly --- mutex.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mutex.h b/mutex.h index 4bb23df..5dbbbb9 100644 --- a/mutex.h +++ b/mutex.h @@ -99,8 +99,10 @@ inline void mutex_lock(sem_t *mutex) { } inline void mutex_unlock(sem_t *mutex) { - while (sem_trywait(mutex) == -1 && errno == EINTR); - sem_post(mutex); + int available; + sem_getvalue(mutex, &available); + if (available <= 0) + sem_post(mutex); } inline void mutex_destroy(sem_t *mutex) { -- cgit v1.2.3