nginx中ngx_list的數據結構

今天沒事了,在查看nginx源代碼中看到ngx_list的結構,發現設計爲鏈表數組的形式,不知道爲何這樣設計nginx

struct ngx_list_part_s {
    void             *elts;//指向數組的起始地址
    ngx_uint_t        nelts;//數組已經使用多少元素
    ngx_list_part_t  *next;//下一個鏈表元素的地址
};


typedef struct {
    ngx_list_part_t  *last;//指向鏈表最後一個數組元素
    ngx_list_part_t   part;//鏈表的首個數組元素
    size_t            size;//限制每個數組元素的佔用的空間大小
    ngx_uint_t        nalloc; //鏈表中數組元素一旦分配以後是不可更改的,nalloc表示每一個ngx_list_part_t數組的容量,即最多可存儲多少個數據
    ngx_pool_t       *pool;//鏈表中管理內存分配的內存池對象
} ngx_list_t;

 只實現三個方法:數組

ngx_list_t *ngx_list_create(ngx_pool_t *pool, ngx_uint_t n, size_t size);ui

static ngx_inline ngx_int_t ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size);私有方法 在ngx_list_create中調用設計

void *ngx_list_push(ngx_list_t *list);對象

相關文章
相關標籤/搜索