From d343f3b374507ae5941a4ebad3e1188cba7dbb92 Mon Sep 17 00:00:00 2001 From: Cloud Wu Date: Thu, 26 Jun 2014 15:06:47 +0800 Subject: [PATCH] use atomic operation --- skynet-src/skynet_start.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skynet-src/skynet_start.c b/skynet-src/skynet_start.c index c101da30..fc34a077 100644 --- a/skynet-src/skynet_start.c +++ b/skynet-src/skynet_start.c @@ -127,11 +127,11 @@ _worker(void *p) { if (q == NULL) { CHECK_ABORT if (pthread_mutex_lock(&m->mutex) == 0) { - ++ m->sleep; + __sync_fetch_and_add(&m->sleep, 1); // "spurious wakeup" is harmless, // because skynet_context_message_dispatch() can be call at any time. pthread_cond_wait(&m->cond, &m->mutex); - -- m->sleep; + __sync_fetch_and_sub(&m->sleep, 1); if (pthread_mutex_unlock(&m->mutex)) { fprintf(stderr, "unlock mutex error"); exit(1);