nginx 源码学习笔记(二十二)—— event 模块(三) ——epoll模块

上一节我们讲到了事件驱动的模块,它把我们引入epoll模块,今天我们主要学习下nginx如何使用epoll完成时间驱动,实现高并发;这里不详细讲解epoll原理,如果有机会再做一次单独的epoll的学习。

本文来自于:http://blog.csdn.net/lengzijian

回忆一下上一节的内容,在我们讲到ngx_process_events_and_timers时,在源码最后提到了ngx_process_events,这里是把我们引入epoll的入口:

1.先来看下ngx_process_events的宏定义:



2.继续查找ngx_event_actions,我们找到如下结构体:



a.我们去源代码中搜索下关键字ngx_event_actions


前面三行表示:所有event模块对象中的actions就是ngx_event_actions_t对象,而ngx_event_action在第四行定义为全局变量,用于同一接口,下面又存在一个疑问,event模块到底做了些什么?

b.先找到ngx_event_module_t的结构体:



我们找一个例子来详细讲解下


这里有注释就不详细讲解了。

ngx_process_events这个函数就是我们要找的,要了好大一圈,ngx_process_events实际上就是调用这个函数,此处本人纠结,为什么作者不加点注释呢。

3.下面正式观察下ngx_epoll_init函数:



4.下面观察下主要的函数ngx_epoll_process_events:











posted on 2012-05-28 14:15  h2内存数据库  阅读(747)  评论(0编辑  收藏  举报

导航