Epoll

关于epoll,哪位大神能用言简意赅的方式来介绍一下呢,感觉这个内容是Nginx最后核心的一块技术原理,在网上也学习了一些内容,感觉还是有点没有吃透。


转赞一篇不错的好文”https://zhuanlan.zhihu.com/p/63179839

邀请回答
提问于 2020-08-23 22:33
272 次浏览
共3个回答

发表评论
  • 陶辉
    2020-08-25 08:23

    简言之,就是内核将Socket缓冲区情况通知给用户态进程的接口。概括为以下4点:

    1、TCP由内核实现的,epoll是内核提供给应用进程的接口;

    2、当TCP连接需要发送数据时,Socket缓冲区上必须有空闲位置。内核接收到对方的ACK报文,才能释放掉发送报文(否则要反复重发),产生空闲位置。

    3、当TCP连接需要接收数据时,必须是Socket缓冲区上已经有数据了,否则read函数就会阻塞。epoll_wait可以完成2、3两个步骤(包括三次握手)的通知。

    4、当你就某个TCP连接需要接收内核通知时,通过epoll_ctl函数告诉内核即可。

    6
    回复
    举报
    • jiangyidigital 2020-08-26 11:19
      谢谢老师指导
      0
      回复
      举报
  • 守望
    2020-09-08 18:10

    nginxLinux平台默认是epoll事件模型,但是内核版本号要高于2.6.18才提供,现在的各大Linux发行版都满足了,如果不满足内核版本,默认的是select事件模型。

    0
    回复
    举报
  • 阿尔巴
    2020-08-26 14:21

    好的问题,感谢陶老师的回答

    0
    回复
    举报
提问者

jiangyidigital

暂无个人介绍

  • 0

    文章

  • 1

    粉丝

  • 2

    被赞

jiangyidigital
按Enter键发送
您已邀请位用户
版权所有©F5 Networks,Inc.保留所有权利。京ICP备16013763号-5