代码参考自1.5.10 ,参考 http://blog.youkuaiyun.com/livelylittlefish/article/details/6607324
nginx双向队列(ngx_queue.h)的分割队列(链表)操作:
#define ngx_queue_split(h, q, n) \
(n)->prev = (h)->prev; \
(n)->prev->next = n; \
(n)->next = q; \
(h)->prev = (q)->prev; \
(h)->prev->next = h; \
(q)->prev = n;
其中,h是原双向链表的头,n是新的一个节点(代表被分裂后新链表的头,这个节点看起来是新创建的),q是被分离的地方,q前仍旧属于h双向队列,q后属于n双向队列。
分裂过程就是几个指针指来指去,让h、q、n的六个指针域都赋值。
分裂过程如下:
1. 注意,每个节点,都有()括起来。
2. 六个指针的赋值过程: