文章首发地址
Nginx服务器响应和处理Web请求的过程,就是基于事件驱动模型的,它也包含事件收集器、事件发送器和事件处理器等三部分基本单元。
select库
select库,是各个版本的Linux和Windows平台都支持的基本事件驱动模型库,并且在接口的定义上也基本相同,只是部分参数的含义略有差异。使用select库的步骤一般是:
- 首先,创建所关注事件的描述符集合。对于一个描述符,可以关注其上面的读(Read)事件、写(Write)事件以及异常发生(Exception)事件,所以要创建三类事件描述符集合,分别用来收集读事件的描述符、写事件的描述符和异常事件的描述符。
- 其次,调用底层提供的select()函数,等待事件发生。这里需要注意的一点是,select的阻塞与是否设置非阻塞I/O是没有关系的。然后,轮询所有事件描述符集合中的每一个事件描述符,检查是否有相应的事件发生,如果有,就进行处理。
Nginx服务器在编译过程中如果没有为其指定其他高性能事件驱动模型库,它将自动编译该库。我们可以使用–with-select_module和–without-select_module两个参数强制Nginx是否编译该库。
poll库
poll库,作为Linux平台上的基本事件驱动模型,是在Linux 2.1.23中引入的。Windows平台不支持poll库。
poll与selec

Nginx服务器采用事件驱动模型处理Web请求,包括select、poll、epoll和rtsig等库。epoll是高效的事件驱动库,适用于大量描述符场景,而rtsig模型利用实时信号处理事件,但存在队列长度限制。Nginx还支持kqueue、/dev/poll和eventport等特定平台的事件驱动模型。
最低0.47元/天 解锁文章
8913

被折叠的 条评论
为什么被折叠?



