From: Jens Axboe Date: Tue, 8 Jul 2014 07:46:37 +0000 (+0200) Subject: mutex: move pthread_cond_signal() outside of lock X-Git-Tag: fio-2.1.11~11 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=6899b6cb0d996c530e42195cfc29e8e0b02aeae3;p=fio.git mutex: move pthread_cond_signal() outside of lock Generally best practice to drop the lock before waking, if possible. Signed-off-by: Jens Axboe --- diff --git a/mutex.c b/mutex.c index 9d10c2ce..9ee3bd83 100644 --- a/mutex.c +++ b/mutex.c @@ -162,14 +162,19 @@ void fio_mutex_down(struct fio_mutex *mutex) void fio_mutex_up(struct fio_mutex *mutex) { + int do_wake = 0; + assert(mutex->magic == FIO_MUTEX_MAGIC); pthread_mutex_lock(&mutex->lock); read_barrier(); if (!mutex->value && mutex->waiters) - pthread_cond_signal(&mutex->cond); + do_wake = 1; mutex->value++; pthread_mutex_unlock(&mutex->lock); + + if (do_wake) + pthread_cond_signal(&mutex->cond); } void fio_rwlock_write(struct fio_rwlock *lock)