int skynet_mq_release(struct message_queue *q) { int ret = 0; LOCK(q) if (q->release) { UNLOCK(q) ret = _drop_queue(q); } else { skynet_mq_force_push(q); UNLOCK(q) } return ret; }
int skynet_mq_release(struct message_queue *q) { int ret = 0; LOCK(q) if (q->release) { // 有释放标记,则删除消息队列q UNLOCK(q) ret = _drop_queue(q); } else { // 没有,则重新压入全局队列 skynet_mq_force_push(q); UNLOCK(q) } return ret; }