1 ngx_queue_t简介
ngx_queue_t是nginx提供的一个轻量级的双向链表容器,它不负责存储数据,既不提供数据的内存分配,它只有两个指针负责把数据链入链表,它跟stl提供的queue不同,stl提供的queue帮助用户存储数据,用户只需要相容器里添加数据即可,而ngx_queue_t,用户必须自己提供存储数据的内存,并且必须定义一种数据结构把ngx_queue_t包含在其中,然后利用ngx_queue_t提供的函数来进行相应的操作。
2 ngx_queue_t结构及其操作
2.1 ngx_queue_t
struct ngx_queue_s {
ngx_queue_t *prev;
ngx_queue_t *next;
};
ngx_queue_t只提供一个指向前驱和一个指向后继的指针,结构非常简单,这也是其能够通用性的原因。
2.2 操作函数
ngx_queue_init(q) //初始化链表
ngx_queue_empty(h) //判断链表是否为空
ngx_queue_insert_head(h, x) //在头部插入一个元素
ngx_queue_insert_after //在h元素前面插入一个元素
ngx_queue_insert_tail(h, x) //在h尾部插入一个元素
ngx_queue_head(h) //返回第一个元素
#define ngx_queue_last(h) //返回最后一个元素
ngx_queue_sentinel(h) //返回链表容器结构体的指针
ngx_queue_next(q) //返回下一个q的下一个元素
ngx_queue_prev(q) //返回q的前一个元素
ngx_queue_remove(x) //删除x结点