From fab471d8571decb5b9eab958e5dce850839e08c4 Mon Sep 17 00:00:00 2001 From: Emil Mikulic Date: Mon, 11 Mar 2013 03:45:24 +1100 Subject: [PATCH] Reduce locking in writer_routine(). --- buftee.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/buftee.c b/buftee.c index c31ba69..23d2d2c 100644 --- a/buftee.c +++ b/buftee.c @@ -276,11 +276,9 @@ static void unlock(pthread_mutex_t* mutex) { static void* writer_routine(void *arg) { struct writer_thread* my = arg; + struct buf* buf = NULL; + lock(&shared_queue_mutex); for (;;) { - // FIXME: less locking - struct buf* buf = NULL; - - lock(&shared_queue_mutex); while (!stopping && STAILQ_EMPTY(&my->queue)) { // Sleep. pthread_cond_wait(&shared_wakeup_cond, &shared_queue_mutex); @@ -302,7 +300,6 @@ static void* writer_routine(void *arg) { // Unreference buffer, freeing it if we have to. lock(&shared_queue_mutex); unref_buf(buf); - unlock(&shared_queue_mutex); } warnx("thread exiting cleanly"); return NULL; -- 2.17.1