本章讲述一下nginx中队列的实现。
1. ngx_queue_t数据结构
这里nginx中队列的实现与我们通常的做法有些不同。通常情况下,我们队列的每一个节点包含指针元素
与数据元素
两个部分,但是在这里我们看到却根本没有数据元素。这里nginx是反其道而行之, 将queue作为数据节点的一部分来实现队列。下面给出nginx_queue_t
使用时的一个整体样例:
上面通过queue
的地址,减去对应的偏移地址,就可以求得元素的首地址。
2. nginx队列的基本操作
上面操作较为简单,我们只介绍一下如下几个:
ngx_queue_split
: 本宏定义用于将一个队列从q节点位置分割成两个队列, h
与n
分别为这两个新队列的头。注意,这里q
与h
不能指向相同的节点。
3. 相关函数声明
[参看]