我有一个源程序,需要写出他的数据结构第五版源程序,模块设计,确定所需模块,以及各子模块功能叙述

计算机程序设计员理论试题库,理論力学试题库,计算机网络试题库,机械设计基础试题库,机械设计试题库,程序设计语言理论,高考试题库,试题库,事业单位试题库,南京电大试题库

终于算完了趁着十一草草看完,性价比不高不低吧有些困惑的问题得到了解决所以还是很值得的,尤其是可变变量那块数据结构第五版源程序和算法一章最为粗糙,计划换本专门的书看


Nginx是高度模块化的各个功能都会葑装在模块中。例如core模块、HTTP模块等也可以自定义模块。

这一篇文章主要讲解模块的初始化后续会有一篇文章教你如何编写Nginx的模块。

结構体ngx_module_s主要用于管理每一个模块的详细信息

Nginx的所有模块会放置在全局变量cycle的cycle->modules 模块数组。通过这个数组我们就可以拿到每个模块的具体信息。

1. index 主要用于模块的标识

cycle->conf_ctx主要存储的是各个模块的配置文件结构的指针地址。

cycle->conf_ctx中获取各个模块配置信息都是通过模块的标识来确定数组位置的

获取核心模块的配置信息:

2. commands主要用于配置模块的命令集。Nginx的配置文件都是通过commands命令集来逐个解析具体定义好的配置信息(每个模塊不一样)下一章会详解解读

3. ctx 模块上下文。主要放置一个模块自定义的结构例如核心模块就是ngx_core_module_t的结构。ngx_core_module_t中可以自定义一些方法或者参數

5. init_module:初始化模块的时候会回调的函数。

* 核心模块core数据结构第五版源程序 * ngx_module_s->ctx 核心模块的上下文主要定义了创建配置和初始化配置的结构

在nginx.c嘚main函数中,第一步对模块的处理就是进行编号处理仅仅是编号,不做任何其他处理

 /* 初始化所有模块;并对所有模块进行编号处理;
 * 初始化所有模块;并对所有模块进行编号处理;
 
我们可以看到,模块的个数是通过






而ngx_modules的模块到底是什么时候确定的呢


1. 具体的模块可通过编譯前的configure命令进行配置,即设置哪些模块需要编译哪些不被编译。当编译的时候会生成ngx_modules.c的文件,里面就包含模块数组









 /* 创建模块以及创建模块的配置信息 */
 


* 创建一个列表,并将静态的模块拷贝到列表上
 

2. 在编写自定义模块的时候可以定义init_module方法,主要用于这个模块的初始化工莋

 /* 调用每个模块的初始化函数 */
 


* 对每个模块进行一次初始化操作 * 调用 init_module 回调函数,初始化每个模块的数据
 
 

模块进程初始化主要回调模块数據结构第五版源程序中的init_process回调函数。
此方法会在后面的章节中详细讲解。
 /* 对模块进程初始化 - 这边初始化的是所有的模块有init_process回调函数的进荇初始化工作 */
 * 统计每个类型下面总共多少个模块

我要回帖

更多关于 数据结构第五版源程序 的文章

 

随机推荐