blog新地址 Surprised => indulgence => Calm => Lost => Panic =>Calm

【笔记】深入理解Nginx-worker-03-Nginx中的数据类型和数据结构

读书笔记 imekaku 1106℃ 0评论

Nginx定义、封装的一些基本数据结构

  1. 整型的封装
  2. 字符串类型的封装
  3. ngx_str_t只有两个成员,其中data指针指向字符串起始地址,len表示字符串的有效长度。

    注意:ngx_str_t的data成员指向的并不是普通的字符串,因为这段字符串未必会以’\0’作为结尾,所以使用时必须根据长度len来使用data成员。具体使用方法,参考P141.

  4. 链表容器
    • size ngx_list_part_t中每个元素的大小
    • nalloc ngx_list_part_t数组的容量,即最多可存储多少个数据
    • part 链表的首个数组元素
    • last指向链表的最后一个数组元素
    • pool链表中管理内存分配的内存池对象
    • elts指向数组的起始地址
    • nelts表示数组中已经使用了多少个元素。当然,nelts必须小于ngx_list_t结构体中的nalloc
    • next下一个链表元素ngx_list_part_t的地址

    这里ngx_list_t 是相当于一个链表,而链表的每个元素是ngx_list_part_s(是一个数组)

    事实上,ngx_list_t中的所有数据都是由ngx_pool_t类型的pool内存池分配的,它们通常都是连续的内存

    ngx_list_t的内存分布情况:

    ngx_list_t_内存结构.png

    这里,pool内存池为其分配了连续的内存,最前端内存存储的是ngx_list_t结构中的成员,紧接着是第一个ngx_list_part_t结构占用的内存,然后是ngx_list_part_t结构指向的数组,它们一共占用size*nalloc字节,表示数组中拥有nalloc个大小为size的元素。其后面是第2个ngx_list_part_t结构以及它所指向的数组,依此类推

  5. 键值对封装
  6. ngx_buf_t数据结构
  7. ngx_chain_t数据结构

转载请注明:Imekaku-Blog » 【笔记】深入理解Nginx-worker-03-Nginx中的数据类型和数据结构

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址