声明:本文为原创博文,转载请注明出处。
在libuv中,有一个只使用简单的宏封装成的高效队列(queue),现在我们就来看一下它是怎么实现的。
首先,看一下queue中最基本的几个宏:
1 typedef void *QUEUE[2];2 3 /* Private macros. */4 #define QUEUE_NEXT(q) (*(QUEUE **) &((*(q))[0]))5 #define QUEUE_PREV(q) (*(QUEUE **) &((*(q))[1]))6 #define QUEUE_PREV_NEXT(q) (QUEUE_NEXT(QUEUE_PREV(q)))7 #define QUEUE_NEXT_PREV(q) (QUEUE_PREV(QUEUE_NEXT(q)))
首先,QUEUE被声明成一个"具有两个char*元素的指针数组",如下图:


