global queue

This commit is contained in:
云风
2012-08-14 14:45:05 +08:00
parent b50759f464
commit e7ed7c96fc

View File

@@ -213,19 +213,12 @@ skynet_context_message_dispatch(void) {
assert(ctx->in_global_queue);
int re_q = 1;
struct skynet_message msg;
if (skynet_mq_pop(q,&msg)) {
// empty queue
__sync_lock_release(&ctx->in_global_queue);
if (skynet_mq_pop(q,&msg)) {
skynet_context_release(ctx);
return 0;
}
if (__sync_lock_test_and_set(&ctx->in_global_queue, 1)) {
re_q = 0;
}
}
if (ctx->cb == NULL) {
if (skynet_harbor_message_isremote(msg.source)) {
@@ -237,11 +230,9 @@ skynet_context_message_dispatch(void) {
_dispatch_message(ctx, &msg);
}
skynet_context_release(ctx);
if (re_q) {
assert(q == ctx->queue);
skynet_globalmq_push(q);
}
skynet_context_release(ctx);
return 0;
}