关于Linux epoll的疑问

发布于 2021-11-30 03:02:54 字数 300 浏览 798 评论 12

对于如下代码:

struct epoll_event events[MAX_EVENTS];
nfds = epoll_wait(epoll_fd, events, MAX_EVENTS, -1);

返回的events数组里是否会出现重复的文件描述符?
或者说,是否存在 i, j 满足以下条件:
(1)  0 <= i, j < nfds 并且 i 不等于 j
(2)  events[i] 和 events[j] 的文件描述符相同

 

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

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

发布评论

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

评论(12

明媚如初 2021-12-02 00:40:16

我之前对stale event的理解似乎有些偏差,stale event应该是指在处理某个fd的事件的时候关闭了另外一个fd,而不是关闭了当前这个fd

做个少女永远怀春 2021-12-02 00:30:56

我以你说的stale event为关键词,搜索到了这篇文章,不知道对你有没有帮助

风柔一江水 2021-12-02 00:26:09

对于这句 “When successful, epoll_wait() returns the number of file descriptors ready for the requested I/O”,我觉得既然返回值是fd的数量,那么fd在events数组里应该不会重复,否则就意味着同一个fd被当成两个或更多个fd

偏爱自由 2021-12-02 00:20:22

 返回多少个fd与分开通知并不矛盾吧

做个少女永远怀春 2021-12-01 21:47:45

同一个文件描述符上的的两个事件,还是两个事件,并不会成为一个事件。所以,会出现。楼主你考虑下你自己设计epoll接口会将同文件上的多个事件合并成一个吗?epoll中的那段话的意思是:在epoll_wait中,如果有多个事件出现,那么他们会一起被返回,被report,而并不需要多次epoll_wait调用。

带上头具痛哭 2021-12-01 20:52:11

   在epoll_wait循环中,如果某fd在事件处理中关闭,应当通过对与该fd关联的private data来进行标记,而不是直接关闭掉吧

剑心龙吟 2021-12-01 20:17:00

同一个文件描述符上的的两个事件,还是两个事件,并不会成为一个事件。所以,会出现。楼主你考虑下你自己设计epoll接口会将同文件上的多个事件合并成一个吗?epoll中的那段话的意思是:在epoll_wait中,如果有多个事件出现,那么他们会一起被返回,被report,而并不需要多次epoll_wait调用。

卸妝后依然美 2021-12-01 19:12:51

   在epoll_wait循环中,如果某fd在事件处理中关闭,应当通过对与该fd关联的private data来进行标记,而不是直接关闭掉吧

如日中天 2021-12-01 17:26:17

epoll 手册页中有这样一段,一直不能理解:

Q7  If more than one event occurs between epoll_wait(2) calls, are they combined or reported separately?
A7  They will be combined.

巡山小妖精 2021-12-01 15:16:42

这个,你是指相同的文件描述符上有不同的通知事件么?

草莓味的萝莉 2021-12-01 02:12:12

这个,你是指相同的文件描述符上有不同的通知事件么?

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