聲明:本文為原創(chuàng)博文,轉(zhuǎn)載請注明出處。
在libuv中,有一個只使用簡單的宏封裝成的高效隊列(queue),現(xiàn)在我們就來看一下它是怎么實現(xiàn)的。
首先,看一下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*元素的指針數(shù)組",如下圖: