上一节我们讲到了事件驱动的模块,它把我们引入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:











相关文章:

  • 2021-07-03
  • 2022-01-07
  • 2021-06-29
  • 2021-08-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-10
猜你喜欢
  • 2022-12-23
  • 2021-11-02
  • 2021-09-29
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案