当前位置: 技术问答>linux和unix
问个比较菜的关于epoll的问题
来源: 互联网 发布时间:2017-05-03
本文导语: 我看到很多网上的epoll模型在服务器给客户端回复了数据并且关闭了socket了之后并没有调用epoll_ctl(efd, EPOLL_CTL_DEL, sockfd, &ev)来删除epoll对该fd的监听,请问是不是不用调用epoll_ctl(efd, EPOLL_CTL_DEL, sockfd, &ev)来删除?还...
我看到很多网上的epoll模型在服务器给客户端回复了数据并且关闭了socket了之后并没有调用epoll_ctl(efd, EPOLL_CTL_DEL, sockfd, &ev)来删除epoll对该fd的监听,请问是不是不用调用epoll_ctl(efd, EPOLL_CTL_DEL, sockfd, &ev)来删除?还是网上的那些epoll模型错了?如果是不用删除的话,为什么呢,这样监听的fd不是会越来越多么,不会影响性能么?
比如这个网址的:http://blog.csdn.net/ljx0305/article/details/4065058
那个完整例子中,关闭socket后,并没有调用epoll_ctl(efd, EPOLL_CTL_DEL, sockfd, &ev)来删除,而只是调用了这一句:events[i].data.fd = -1;来使后面的循环跳过该fd,不会影响性能么?
比如这个网址的:http://blog.csdn.net/ljx0305/article/details/4065058
那个完整例子中,关闭socket后,并没有调用epoll_ctl(efd, EPOLL_CTL_DEL, sockfd, &ev)来删除,而只是调用了这一句:events[i].data.fd = -1;来使后面的循环跳过该fd,不会影响性能么?
|
没仔细看看 man 7 epoll 吧,描述符关闭后epoll自动删除相关结构。
|
我最近也在使用epoll,都是用epoll_ctl(efd, EPOLL_CTL_DEL, sockfd, &ev)来删除的,个人觉得,既然有了EPOLL_CTL_ADD操作,就应该要有 EPOLL_CTL_DEL操作,这样逻辑看起来清晰点。如果楼上说的“描述符关闭后epoll自动删除相关结构”是真的,我只能感慨,现在的程序员真的是越来越不被相信了。