今天看了一下Nginx源码,发现写得非常好,有意仔细解剖之,希望这几天时间能十分粗略地分析完。我从程序运行流程分析,到需要的时候补充子系统的具体实现。
废话不多说,先来看main函数:
(1)一开始当然是各种初始化,设计到很多模块,以后慢慢分析。举些例子:时间、日志、ssl、内存池等等。有一个叫init_cycle的变量比较显眼,它的类型为ngx_cycle_s,下一篇先来重点关照他。
(2) ls = ngx_array_push(&cycle->listening);这个函数是把等式左边的值push到括号里面的数组。
(3) for (n = ngx_pagesize; n >>= 1; ngx_pagesize_shift ) { /* void */ }(ngx_os_init里面)挺有意思的。
(4)main函数最后将进入一个不归路,
- if (ngx_process == NGX_PROCESS_SINGLE) {
- ngx_single_process_cycle(cycle);
- } else {
- ngx_master_process_cycle(cycle);
- }
这两个函数都是死循环,也真正开始工作了。
main函数具体的流程我们以后补上,先一个一个部分熟悉。
阅读(1340) | 评论(0) | 转发(0) |