本节我们讲述一下nginx中list的实现。
1. core/ngx_list.h
下面对ngx_list.h头文件各部分做一个简单的解释:
1.1 相关数据结构定义
1) ngx_list_part_t结构
ngx_list_part_t
代表一个链表中的一个part,下面对各字段做个简要介绍:
-
elts
: 一个part中存放元素的基址
-
nelts
: 一个part中当前元素个数
-
next
: 指向链表的下一个part
2) ngx_list_t结构
代表着总个链表结构,下面对各字段做个简要介绍:
-
last
: 指向链表的最后一个part
-
part
: 链表的第一个part
-
size
: 链表中每个元素的大小
-
nalloc
: 每一个part的容量
-
pool
: 该链表结构对应的内存池
下面给出ngx_list_t
的一个整体结构图:
1.2 相关函数声明
1.3 函数ngx_list_init()
本函数较为简单,就是对一个链表结构进行简单的初始化。
2. core/ngx_list.c源文件
下面我们简单介绍一下这两个函数:
1) 函数ngx_list_create()
本函数主要是创建一个ngx_list_t
结构,然后调用ngx_list_init()进行链表的初始化。
2) 函数ngx_list_push()
本函数用于从链表尾部找出一个可用于插入的位置。