![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
nginx
文章平均质量分 71
nginx源码分析和模块开发
yanghuo11
这个作者很懒,什么都没留下…
展开
-
njs内存池代码阅读
njs内存池阅读原创 2022-08-28 22:57:27 · 286 阅读 · 0 评论 -
nginx 官方的脚本njs环境搭建和使用
njs使用原创 2022-08-07 17:58:02 · 2189 阅读 · 0 评论 -
8 nginx锁(spinlock,ngx_shmtx_t)
1. 原子变量1.1 c语言嵌入汇编的写法asm("汇编语句":输出寄存器:输入寄存器:会被修改的寄存器);1.2 与原子变量实现相关的汇编指令1.2.1 lock前缀指令LOCK指令前缀会设置处理器的LOCK信号,直到使用LOCK前缀的指令执行结束,这会使这条指令的执行变为原子操作。在多处理器环境下,设置LOCK信号能保证某个处理器对共享内存的独占使用。只能操作下列指令:ADD, ADC, AND, BTC, BTR, BTS, CMPXCHG, CMPXCH8B,CMPXCHG16原创 2021-06-23 11:22:44 · 373 阅读 · 0 评论 -
7. nginx线程池
文章目录nginx模块模块定义配置指令结构模块的组织core模块core模块的ctxcore模块的执行流程nginx线程池线程池模块定义线程池的其他结构线程池初始化流程启动线程池线程的回调函数完成任务回调投递任务nginx模块模块定义struct ngx_module_s { ngx_uint_t ctx_index; //同类的数组序号(类似二次索引) ngx_uint_t index; //模块数组序号原创 2021-06-23 11:22:30 · 359 阅读 · 0 评论 -
6.nginx双端队列(ngx_queue_t)
nginx 双端队列定义struct ngx_queue_s { ngx_queue_t *prev; ngx_queue_t *next;};双端队列的实现大部分都是宏实现,头节点为哨兵节点。队列初始化#define ngx_queue_init(q) \ (q)->prev = q;原创 2021-06-12 23:57:04 · 219 阅读 · 1 评论 -
5.nginx字符串(ngx_str_t)
nginx 字符串定义typedef struct { size_t len; //数据长度 u_char *data; //数据} ngx_str_t;len:字符串大小data:字符串有了len成员标志可以不使用C风格的字符串以’\0’结尾字符串初始化#define ngx_string(str) { sizeof(str) - 1, (u_char *) str }#define ngx_null_string { 0, NULL }原创 2021-06-12 23:53:58 · 1510 阅读 · 0 评论 -
4.nginx链表(ngx_list_t)
nginx链表定义typedef struct ngx_list_part_s ngx_list_part_t;struct ngx_list_part_s { void *elts; //内存指针 ngx_uint_t nelts; //当前使用的元素个数 ngx_list_part_t *next; //指向下一个节点};typedef struct { ngx_list_part_t *last; //指向原创 2021-06-12 23:53:10 · 94 阅读 · 0 评论 -
3.nginx数组(ngx_array_t)
nginx数组定义typedef struct { void *elts; //数组头指针 ngx_uint_t nelts; //当前使用的数组元素数量 size_t size; //数组元素大小 ngx_uint_t nalloc; //数组最大的元素个数 ngx_pool_t *pool; //内存池} ngx_array_t;数组的创建static ngx_inline ngx_int_t ngx_arr原创 2021-06-12 23:52:20 · 426 阅读 · 0 评论 -
2.nginx内存池
内存池的定义typedef struct ngx_pool_large_s ngx_pool_large_t;typedef void (*ngx_pool_cleanup_pt)(void *data);struct ngx_pool_large_s { ngx_pool_large_t *next; void *alloc;};struct ngx_pool_cleanup_s { ngx_pool_cleanup_pt原创 2021-06-12 23:50:46 · 64 阅读 · 0 评论 -
1.nginx调试环境搭建
1. 软件工具nginxopenssl 加密解密库pcre 正则库zlib 压缩库2. 生成makefile文件和obj目录指定三个库的路径开启nginx大部分的功能./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module --with-http_secure_link_module --原创 2021-06-12 23:49:34 · 163 阅读 · 0 评论