nginx不是使用epoll么? epoll貌似是同步的吧! 那nginx所谓的异步非阻塞到底异步在哪里? 为什么使用了epoll却叫异步?
还有就是unix上说 select/poll/epoll 管理的socket一般设置成非阻塞, 我觉着这里射不设置为非阻塞好像没有什么关系吧, 毕竟select/poll/epoll本身都会阻塞用户进程的嘛! 如果设置为非阻塞socket的话, select/poll需要轮询, 但是我设置为阻塞socket的话,select直接阻塞不就行了; 反正两种情况都会造成调用select的用户进程阻塞啊
epoll确实是阻塞的.
nginx的异步并不是指epoll的wait是异步的,而是指对于每个socketfd来说,它的handle是异步的.
其实,nginx是在epoll的地方同步监听socketfd的"改变",如果检测到一个sokcetfd“改变”,那么就调用对应的socketfd异步handle.
因此,epoll是阻塞的,nginx是异步非阻塞的.两者所指的Point不同.