内存池 -- 2




概述数组是 C 语言中最常用的数据类型之一,它使用整块内存,按固定大小分割,所以很容易定位到指定序号的元素,因此,在所有容器中,数组的随机访问速度是最快的但是 C 语言的数组是不能动态扩展的,所以 nginx 对他进行了一个封装,成为了类似于 C++ STL 中 vector 的数据类型具有以下优点:访问速度快元素个数不确定,并可以动态扩充内存池统一管理内存 nginx 动态数组相关的声明和定义分别在:ngx_array.h 和 ngx_array.c 两个文件中 动态数组结构 -- ngx_array_t// 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; // }
#技术帖    #算法    #c++    #cpp   
继承未关闭连接 -- ngx_add_inherited_sockets在这一过程中,nginx 将所有继承得到的连接加入到新的监听数组中,以便之后继续监听和使用这些连接// 获取所有继承连接fd的相关信息 if (ngx_add_inherited_sockets(&init_cycle) != NGX_OK) { return 1; } 将环境变量中保留的连接加入监听数组// static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle) // 继承环境变量中保留的连接 fd {{{ static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle) { u_char *p, *v, *inherited; ngx_int_t s; ngx_listening_t *ls; inherited = (u_char *) getenv(NGINX_VAR); if (inherited == NULL) { return NGX_OK; } ngx_log_error(NGX_LOG_NOTICE,
#技术帖    #network    #计算机网络    #龙潭书斋   



京ICP备15018585号