nginx 源码学习笔记(二十)—— event 模块(一) ——初始化
读完之前的学习笔记,相信已经对nginx的启动流程有了一定的认识,从这一节起我们想深入各个模块,学习各个模块的内的主要操作。
本文来自于:http://blog.csdn.net/lengzijian/article/details/7598996
今天我们就来学习下event模块,在之前的启动里多次提到了调用各个模块的钩子函数,我们先来回忆一下关于event模块钩子函数的执行,也是event模块启动的步骤:
1.创建conf(creat_conf):
ngx_event_create_conf()
该方法,主要是创建了一个ngx_event_conf_t结构体,并且分配内存空间。
2.读取配置文件:
例如读取到的文件有如下行:
这个地方的events是一个block指令,在大括号内可以配置很多指令,这些指令定义在src/event/ngx_event.c中
当解析到events是会回调如下函数:
ngx_events_block()函数中最重要的一个过程就是调用ngx_conf_parse(cf, NULL),此处调用ngx_conf_parse()的作用就是完成配置文件中events{}这个block的解析,从而调用其下所有的配置指令的回调函数,完成解析配置文件的初始化工作。但是这里我个人有个问题,待问完前辈之后,在指明问题和答案******。
2.初始化conf(init_conf)
ngx_event_init_conf()
该方法,主要是初始化ngx_event_conf_t结构体。
3.ngx_event_module_init
从名字上看是模块的初始化操作,但是纵观各个模块源代码,发现很多模块都没有init回调函数。这里本人也在纠结为什么,希望在学完全部代码后,能够找到答案。
4.ngx_event_process_init
在之前的worker进程分析中有提到过,当创建了一个worker进程后,worker进程首先就会做进程的初始化工作,此时会调用ngx_event_process_init函数。
到现在为止,事件驱动的初始化已经完成。