Chinaunix首页 | 论坛 | 博客
  • 博客访问: 225846
  • 博文数量: 59
  • 博客积分: 1215
  • 博客等级: 少尉
  • 技术积分: 575
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-09 02:18
文章分类

全部博文(59)

文章存档

2012年(53)

2011年(6)

分类: C/C++

2012-02-23 13:38:52

    今天看了一下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函数最后将进入一个不归路,
  1. if (ngx_process == NGX_PROCESS_SINGLE) {
  2.         ngx_single_process_cycle(cycle);

  3.     } else {
  4.         ngx_master_process_cycle(cycle);
  5.     }
这两个函数都是死循环,也真正开始工作了。
main函数具体的流程我们以后补上,先一个一个部分熟悉。
阅读(1302) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~