nginx是同步的网络IO还是异步的网络IO

如题,我所知道的是nginx是多进程的。主进程(父进程)通过epoll向内核注册IO事件,当IO事件发生的时候内核会发送信号给父进程,这是父进程通知一个子进程去内核的缓冲区拿数据进行处理。也就是说nginx使用的是“IO多路复用”,IO多路复用意味着用户进程需要自己使用一个线程将数据从内核缓冲区复制到用户缓冲区,是同步的。

我不知道我上面理解的对不对,但是我看网上的很多资料是说nginx使用的是异步IO模型,我所理解的异步IO是:当数据到达内核缓冲区后,内核负责吧数据从内和缓冲区复制到用户缓冲区。

所以nginx的网络模型到底是什么样的?还请大神指点啊!## 标题文字 ##

幕布斯7119047
浏览 810回答 3
3回答

九州编程

我理解nginx的网络IO在单个具体处理进程中是同步的。因为它在处理时是网络阻塞的。

绝地无双

POSIX 定义:An asynchronous I/O operation does not cause the requesting process to be blocked;A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes; epoll 在内核返回就绪事件时需要用户线程自己进行读写,这个过程是阻塞的,所以是同步的而非异步。

繁星点点滴滴

nginx在linux一般是用epoll, 它使用的是注册回调函数,数据准备好自动调用。这个过程其实阻塞的。master分配某个连接给worker进程,worker同一时间的阻塞的,只能处理一个请求。。还有nginx是多进程模型的
打开App,查看更多内容
随时随地看视频慕课网APP