这样理解这个epoll例子对不对?
- 0次
- 2021-07-21 05:32:03
- idczone
https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/ 这个
epoll_create创建一个epoll监控队列
epoll_ctl EPOLL_CTL_ADD把主socket加入队列,在有连接进来时返回事件
返回事件后判断是否有错误产生
没有错误则检查每个事件 如果事件属于主socket[1],这表明有连接过来,把accept的socket加入队列
如果事件是accept的socket,表明有数据到了,循环读取直到缓冲区被取空,然后epoll_ctl EPOLL_CTL_DEL把accept的socket移出队列
进入下一次循环
[1]这里检查应该是用来区分主socket和accepted socket吧?
如果有错,还请指正:)
另外,man上说ET模式可以EPOLLIN|EPOLLOUT,这样对效率会有影响吗?
p.s.吐槽下Google 好淫荡 搜索先显示一个勾引你收藏的页面 再点一次才能到结果页
不需要EPOLL_CTL_DEL,除非你不想再关注这个socket
1.对的
2.不会有性能影响
嗯,例子里在accepted socket处理完后会关闭,注释里说明了epoll会自动移除。是我没认真看。
其实我喜欢LT模式,ET模式并不好用,性能也未必比LT高
我没倾向哪一个啊
很多人认为ET高负载比LT好而已