PC6下载站

分类分类

nginx-1.0.4的容器源码分析—数组结构ngx_array_t

关注+2011-07-12作者:清晨

 本文我们一起学习nginx的容器,先从最简单的数组开始。

 数组实现文件:文件:./src/core/ngx_array.h/.c。.表示nginx-1.0.4代码目录,本文为/usr/src/nginx-1.0.4。

 1. 数组结构

 1.1 ngx_array_t结构

 nginx的数组结构为ngx_array_t,定义如下。

view plaincopy to clipboardprint?
  1. struct ngx_array_s {  
  2.     void        *elts;    //数组数据区起始位置   
  3.     ngx_uint_t   nelts;   //实际存放的元素个数   
  4.     size_t       size;    //每个元素大小   
  5.     ngx_uint_t   nalloc;  //数组所含空间个数,即实际分配的小空间的个数   
  6.     ngx_pool_t  *pool;    //该数组在此内存池中分配   
  7. };  
  8.    
  9. typedef struct ngx_array_s  ngx_array_t;  

sizeof(ngx_array_t)=20。由其定义可见,nginx的数组也要从内存池中分配。将分配nalloc个大小为size的小空间,实际分配的大小为(nalloc * size)。详见下文的分析。

 

1.2 ngx_array_t的逻辑结构

 ngx_array_t结构引用了ngx_pool_t结构,因此本文参考nginx-1.0.4源码分析—内存池结构ngx_pool_t及内存管理一文画出相关结构的逻辑图,如下。注:本文采用UML的方式画出该图。

 

 

展开全部

相关文章

更多+相同厂商

热门推荐

  • 最新排行
  • 最热排行
  • 评分最高
排行榜

    点击查看更多

      点击查看更多

        点击查看更多

        说两句网友评论

          我要评论...
          取消