skynet 源码阅读--3--codenote
void
skynet_mq_push(struct message_queue *q, struct skynet_message *message) {
assert(message);
SPIN_LOCK(q)
q->queue[q->tail] = *message; /** 为什么还是message ***/
if (++ q->tail >= q->cap) {
q->tail = 0;
}
if (q->head == q->tail) {
expand_queue(q);
}
if (q->in_global == 0) {
q->in_global = MQ_IN_GLOBAL;
skynet_globalmq_push(q);
}
SPIN_UNLOCK(q)
}
没看懂
q->queue[q->tail] = *message;
后来反应过来,是一级指针,还是二级指针。
分配的空间也可以看出
q->queue = skynet_malloc(sizeof(struct skynet_message) * q->cap);
很多时候我都在期待3年后的自己是一个什么样的,5年后自己又是一个什么样的。因为未知,所以生命才更加精彩。

浙公网安备 33010602011771号