nginx不是使用epoll么? epoll貌似是同步的吧! 那nginx的异步非阻塞到底异步在哪里?

发布于 2022-09-05 20:34:10 字数 287 浏览 31 评论 0

nginx不是使用epoll么? epoll貌似是同步的吧! 那nginx所谓的异步非阻塞到底异步在哪里? 为什么使用了epoll却叫异步?

还有就是unix上说 select/poll/epoll 管理的socket一般设置成非阻塞, 我觉着这里射不设置为非阻塞好像没有什么关系吧, 毕竟select/poll/epoll本身都会阻塞用户进程的嘛! 如果设置为非阻塞socket的话, select/poll需要轮询, 但是我设置为阻塞socket的话,select直接阻塞不就行了; 反正两种情况都会造成调用select的用户进程阻塞啊

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

焚却相思 2022-09-12 20:34:14

epoll怎么是同步的了?epool是新的事件通知机制,旨在与取代select()和poll()。详情建议看维基百科。事件通知这玩意就是异步的

伏妖词 2022-09-12 20:34:13
  1. epoll确实是阻塞的.

  2. nginx的异步并不是指epoll的wait是异步的,而是指对于每个socketfd来说,它的handle是异步的.

其实,nginx是在epoll的地方同步监听socketfd的"改变",如果检测到一个sokcetfd“改变”,那么就调用对应的socketfd异步handle.

因此,epoll是阻塞的,nginx是异步非阻塞的.两者所指的Point不同.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文