diff --git a/src/threadpool.c b/src/threadpool.c index debaf5ca..dd0abd9a 100644 --- a/src/threadpool.c +++ b/src/threadpool.c @@ -101,9 +101,12 @@ static void worker(void* arg) { static void post(QUEUE* q) { + int empty_queue; uv_mutex_lock(&mutex); + empty_queue = QUEUE_EMPTY(&wq); QUEUE_INSERT_TAIL(&wq, q); - uv_cond_signal(&cond); + if (empty_queue) + uv_cond_signal(&cond); uv_mutex_unlock(&mutex); }