nginx的动态数组--ngx_array_t
2016-08-01 19:58
267 查看
// struct ngx_array_t
// nginx 数组结构 {{{
typedef struct {
void *elts; // 数组起始位置
ngx_uint_t nelts; // 数组元素个数
size_t size; // 单个元素大小
ngx_uint_t nalloc; // 空间能够容纳元素个数
ngx_pool_t *pool; // 内存池
} ngx_array_t; // }}}
nelts 当前已经存在数组中的元素个数
size 每个元素的大小
nalloc 当前数组空间所能容纳的元素个数
pool 指向数组分配所在内存池
ngx_array_init 数组结构初始化(ngx_arry_create 中调用)
ngx_array_create 动态数组创建
ngx_array_destory 动态数组销毁
ngx_arry_push 在动态数组尾部插入一个元素
ngx_array_push_n 在动态数组尾部插入n个元素
动态数组创建
在这个函数中,首先在内存池中为ngx_array_t结构分配了空间,然后调用了ngx_array_init函数初始化ngx_array_t结构的各个域,并未实际的存储区域分配空间
动态数组的销毁
如果该连续存储区域或ngx_array_t是内存池已有空间的尾部,则将他们释放掉,以便可以节约这部分空间的使用,否则不做任何处理
在动态数组尾部插入一个元素
如果空间足够,则插入该元素,并更新ngx_array_t各个域的值
否则开辟新的连续内存,并将数组中所有数据全部拷贝到新的内存,并添加元素,这样做消耗了一定的效率,但是保证了数组空间的连续性,也就保证了今后随机访问的高效性
在动态数组尾部插入n个元素
与ngx_array_push的操作非常类似,只是他一次性插入n个元素,提高了效率
// nginx 数组结构 {{{
typedef struct {
void *elts; // 数组起始位置
ngx_uint_t nelts; // 数组元素个数
size_t size; // 单个元素大小
ngx_uint_t nalloc; // 空间能够容纳元素个数
ngx_pool_t *pool; // 内存池
} ngx_array_t; // }}}
结构说明
elts 真正的连续存储内存的首地址nelts 当前已经存在数组中的元素个数
size 每个元素的大小
nalloc 当前数组空间所能容纳的元素个数
pool 指向数组分配所在内存池
动态数组操作函数
nginx动态数组主要提供了以下操作函数ngx_array_init 数组结构初始化(ngx_arry_create 中调用)
ngx_array_create 动态数组创建
ngx_array_destory 动态数组销毁
ngx_arry_push 在动态数组尾部插入一个元素
ngx_array_push_n 在动态数组尾部插入n个元素
动态数组创建
在这个函数中,首先在内存池中为ngx_array_t结构分配了空间,然后调用了ngx_array_init函数初始化ngx_array_t结构的各个域,并未实际的存储区域分配空间
动态数组的销毁
如果该连续存储区域或ngx_array_t是内存池已有空间的尾部,则将他们释放掉,以便可以节约这部分空间的使用,否则不做任何处理
在动态数组尾部插入一个元素
如果空间足够,则插入该元素,并更新ngx_array_t各个域的值
否则开辟新的连续内存,并将数组中所有数据全部拷贝到新的内存,并添加元素,这样做消耗了一定的效率,但是保证了数组空间的连续性,也就保证了今后随机访问的高效性
在动态数组尾部插入n个元素
与ngx_array_push的操作非常类似,只是他一次性插入n个元素,提高了效率
相关文章推荐
- Nginx - Core Module Directives
- nginx的用户手册
- nginx 的信号控制概述
- nginx 在ubuntu 上的启动,停止,重启
- 安装nginx
- ubuntu15.10_x64 安装 nginx
- ngx_hash
- Nginx系统学习篇(3)--linux环境下载安装
- CentOS 6.5 安装 Nginx 1.7.8 教程
- nginx负载均衡
- nginx域名顺序与规则
- nginx 支持lua及lua脚本格式化日志
- Nginx安装部署
- Table of Contents - Nginx
- Nginx 日志文件 访问IP统计
- nginx-php工作原理
- nginx配置文件或目录404和403
- 使用 Nginx 自己实现一个 Web 调试代理服务器
- goaccess配置nginx日志解析
- nginx安装及简要配置