nginx不是使用epoll么? epoll貌似是同步的吧! 那nginx的异步非阻塞到底异步在哪里?
nginx不是使用epoll么? epoll貌似是同步的吧! 那nginx所谓的异步非阻塞到底异步在哪里? 为什么使用了epoll却叫异步?
还有就是unix上说 select/poll/epoll 管理的socket一般设置成非阻塞, 我觉着这里射不设置为非阻塞好像没有什么关系吧, 毕竟select/poll/epoll本身都会阻塞用户进程的嘛! 如果设置为非阻塞socket的话, select/poll需要轮询, 但是我设置为阻塞socket的话,select直接阻塞不就行了; 反正两种情况都会造成调用select的用户进程阻塞啊
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
epoll怎么是同步的了?epool是新的事件通知机制,旨在与取代select()和poll()。详情建议看维基百科。事件通知这玩意就是异步的
epoll确实是阻塞的.
nginx的异步并不是指epoll的wait是异步的,而是指对于每个socketfd来说,它的handle是异步的.
其实,nginx是在epoll的地方同步监听socketfd的"改变",如果检测到一个sokcetfd“改变”,那么就调用对应的socketfd异步handle.
因此,epoll是阻塞的,nginx是异步非阻塞的.两者所指的Point不同.