nginx源代码
for every
这个作者很懒,什么都没留下…
展开
-
ngx之ngx_list
nginx实现了ngx_list这个容器,思路很简单,而且使用起来方便。 ngx_list.h: #include <ngx_config.h> #include <ngx_core.h> typedef struct ngx_list_part_s ngx_list_part_t; struct ngx_list_part_s { void *elts; ngx_uint_t nelts; ngx_list_pa原创 2020-08-15 17:10:10 · 173 阅读 · 0 评论 -
nginx的数据结构之nginx_buf
nginx的数据结构之nginx_buf struct ngx_buf_s { //可以参考ngx_create_temp_buf 函数空间在ngx_create_temp_buf创建,让指针指向这些空间 /*pos通常是用来告诉使用者本次应该从pos这个位置开始处理内存中的数据,这样设置是因为同一个ngx_buf_t可能被多次反复处理。 当然,pos的含义是由使用它的模块定义的*...原创 2020-08-14 21:55:00 · 419 阅读 · 0 评论 -
nginx之ngx_rbtree
nginx实现了一个红黑树的容器提供使用,定义在ngx_rbtree里面,这个容器相对简单,提供了插入,删除,初始化等方法。 ngx_rbtree.h: //ngx_rbtree_key为unsigned int或者int类型 typedef ngx_uint_t ngx_rbtree_key_t; typedef ngx_int_t ngx_rbtree_key_int_t; typedef struct ngx_rbtree_node_s ngx_rbtree_node_t; struct原创 2020-08-12 21:10:35 · 272 阅读 · 0 评论 -
nginx之ngx_queue
ngx_queue.h: #include <ngx_config.h> #include <ngx_core.h> #ifndef _NGX_QUEUE_H_INCLUDED_ #define _NGX_QUEUE_H_INCLUDED_ typedef struct ngx_queue_s ngx_queue_t; //队列的两个节点prev和next struct ngx_queue_s { ngx_queue_t *prev; ngx_queue_t原创 2020-08-03 12:14:20 · 194 阅读 · 0 评论 -
nginx之ngx_slab
nginx通过自己实现的slab机制来减少内存的碎片化。 而nginx的slab机制相对于linux内核的slab机制就显得相对的简单。通过nginx可以更快的理解slab机制。 ngx_slab.h: typedef struct ngx_slab_page_s ngx_slab_page_t; struct ngx_slab_page_s { uintptr_t slab; ngx_slab_page_t *next; uintptr_t p原创 2020-08-02 13:32:05 · 723 阅读 · 0 评论 -
nginx之nginx_shmtx(锁机制)
nginx使用共享内存来进行进程间通信,那么就需要一把锁来确保进程通信的正确,在nginx中通过判断操作系统是否支持相应的锁来进行选定锁的类型,分为: 原子锁 信号量互斥锁 文件锁(互斥锁) 自旋锁(多处理器时使用) ngx_shmtx.h: typedef struct { ngx_atomic_t lock; #if (NGX_HAVE_POSIX_SEM) //定义使用信号量 ngx_atomic_t wait; #endif } ngx_shmtx_sh_t; type原创 2020-07-22 17:49:00 · 889 阅读 · 0 评论 -
nginx之ngx_palloc
nginx通过内存池来管理所申请的内存,通过维护内存池,保证程序执行的效率以及避免造成内存泄漏。 ngx_palloc.h: #define NGX_MAX_ALLOC_FROM_POOL (ngx_pagesize - 1) #define NGX_DEFAULT_POOL_SIZE (16 * 1024) #define NGX_POOL_ALIGNMENT 16 #define NGX_MIN_POOL_SIZE原创 2020-05-29 19:26:24 · 598 阅读 · 0 评论 -
nginx之ngx_radix_tree
nginx之ngx_radix_tree ngx_radix_tree.h: //ngx_radix_node_t的定义: typedef struct ngx_radix_node_s ngx_radix_node_t; struct ngx_radix_node_s { ngx_radix_node_t *right; ngx_radix_node_t *left; ngx_radix_node_t *parent; uintptr_t val原创 2020-05-21 18:32:43 · 236 阅读 · 0 评论 -
nginx的数据结构之nginx_array
nginx_array nginx内部自己实现了许多数据结构,这些数据结构是nginx项目的基石。 一、nginx_array array是nginx实现的一个最基础的数据结构,其类型可以是根据自己的需要进行定义。 详见<nginx_array.h>中的: typedef struct { void *elts; ngx_uint_t nelts; ...原创 2020-03-31 14:52:26 · 160 阅读 · 0 评论 -
nginx之ngx_hash
nginx之ngx_hash nginx使用了开放地址法解决哈希冲突 /** *先看nginx里面对hash每个元素的定义: */ typedef struct { void *value; u_short len; u_char name[1]; } ngx_hash_elt_t; 这里使用了一个技巧,使用了零长数组,当申请的内存被value和len占据相应的size后,剩余的内存对于name来说可以使用。原创 2020-05-20 12:13:02 · 259 阅读 · 0 评论