From 6ce11e7e2c6be033e0d712fc39359de7b955c2bf Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Sun, 24 Apr 2016 16:14:04 +0100 Subject: [PATCH] c11/threads: create mutexattrs only when needed If the mutexattrs are the default one can just pass NULL to pthread_mutex_init. As the compiler does not know this detail it unnecessarily creates/destroys the attrs. Signed-off-by: Emil Velikov --- include/c11/threads_posix.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/include/c11/threads_posix.h b/include/c11/threads_posix.h index ce9853b18b3..11d36e46239 100644 --- a/include/c11/threads_posix.h +++ b/include/c11/threads_posix.h @@ -180,9 +180,14 @@ mtx_init(mtx_t *mtx, int type) && type != (mtx_timed|mtx_recursive) && type != (mtx_try|mtx_recursive)) return thrd_error; + + if ((type & mtx_recursive) == 0) { + pthread_mutex_init(mtx, NULL); + return thrd_success; + } + pthread_mutexattr_init(&attr); - if ((type & mtx_recursive) != 0) - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); pthread_mutex_init(mtx, &attr); pthread_mutexattr_destroy(&attr); return thrd_success; -- 2.30.2