技术解析

这样理解这个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好而已

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服