bugfix: blockcall dispatching

This commit is contained in:
云风
2013-02-01 15:30:21 +08:00
parent 045e3d5119
commit d30b8936e3

View File

@@ -167,6 +167,8 @@ _pushhead(struct message_queue *q, struct skynet_message *message) {
if (q->in_global == MQ_LOCKED) { if (q->in_global == MQ_LOCKED) {
skynet_globalmq_push(q); skynet_globalmq_push(q);
q->in_global = MQ_IN_GLOBAL; q->in_global = MQ_IN_GLOBAL;
} else {
assert(q->in_global == MQ_DISPATCHING);
} }
q->lock_session = 0; q->lock_session = 0;
} }
@@ -204,7 +206,7 @@ skynet_mq_lock(struct message_queue *q, int session) {
LOCK(q) LOCK(q)
assert(q->lock_session == 0); assert(q->lock_session == 0);
assert(q->in_global == MQ_IN_GLOBAL); assert(q->in_global == MQ_IN_GLOBAL);
q->in_global = MQ_LOCKED; q->in_global = MQ_DISPATCHING;
q->lock_session = session; q->lock_session = session;
UNLOCK(q) UNLOCK(q)
} }