nginx中ngx list的資料結構

2022-04-29 01:06:08 字數 420 閱讀 7316

今天沒事了,在檢視nginx源**中看到ngx_list的結構,發現設計為鍊錶陣列的形式,不知道為什麼這樣設計

struct ngx_list_part_s ;

typedef struct ngx_list_t;

只實現三個方法:

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

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);

讀 nginx 原始碼 ngx list

c 語言並未提供像 c 一樣的 std 標準庫,所以很多類似 list 變長陣列 map 等常見的資料結構都需要自己實現。鍊錶使用指標將不同的記憶體位址相互關聯,往往用於管理不連續記憶體,相對於陣列,其記憶體管理更加靈活。今天讓我們先看一下 nginx 中單向鍊錶 list 的實現。typedef ...

nginx原始碼分析之ngx list

ngx list t是nginx封裝鍊錶的容器,其原始碼位於 宣告 nginx src core ngx list.h 定義 nginx src core ngx list.c 在nginx中使用頻繁,例如http頭部就是用ngx list t儲存的。nginx的鍊錶 頭 結構為ngx list t...

nginx 程序數設定

nginx預設沒有開啟利用多核cpu,我們可以通過增加worker cpu affinity配置引數來充分利用多核cpu。cpu是任務處理,計算最關鍵的資源,cpu核越多,效能就越好。配置nginx多核cpu,worker cpu affinity使用方法和範例 1.2核cpu,開啟2個程序 wor...