From 3fe87f04c2c48b76458a73c1fd95d741e3a9fa4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=A3=8E?= Date: Tue, 30 Oct 2012 16:53:06 +0800 Subject: [PATCH] remove assert in global mq --- skynet-src/skynet_mq.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skynet-src/skynet_mq.c b/skynet-src/skynet_mq.c index 7d4fb093..fcd44a5c 100644 --- a/skynet-src/skynet_mq.c +++ b/skynet-src/skynet_mq.c @@ -37,14 +37,13 @@ static struct global_queue *Q = NULL; #define LOCK(q) while (__sync_lock_test_and_set(&(q)->lock,1)) {} #define UNLOCK(q) __sync_lock_release(&(q)->lock); -#define GP(p) ((p) % (MAX_GLOBAL_MQ-1)) +#define GP(p) ((p) % MAX_GLOBAL_MQ) static void skynet_globalmq_push(struct message_queue * queue) { struct global_queue *q= Q; uint32_t tail = GP(__sync_fetch_and_add(&q->tail,1)); - assert(!q->flag[tail]); q->queue[tail] = queue; __sync_synchronize(); q->flag[tail] = true; @@ -69,6 +68,7 @@ skynet_globalmq_pop() { return NULL; } q->flag[head_ptr] = false; + __sync_synchronize(); return mq; }