在epoll中,文件描述符以什么顺序返回?

6
假设我已经设置了一组文件描述符,例如8、9、10、11、12,按照指定的顺序执行epoll_wait()以读取它们上面的数据。
当epoll_wait返回要在套接字8、10和11上读取的数据时,epoll数组中返回的文件描述符顺序会是8、10和11吗?还是可能会混乱呢?

我需要它来进行实现... 如果它们是按照相同的顺序排列的,那么我只需使用所需的索引并检查是否已设置。 - VSN
2个回答

3

The man page没有明确说明顺序,因此在调用时依赖顺序可能不是一个好主意。即使它们在一个实现中按顺序返回,它们可能在另一个实现中没有按顺序返回。最好假设它们可以以任何顺序返回。


我在这里查看了:http://lxr.free-electrons.com/source/fs/eventpoll.c,但是没有找到太多线索。:( - VSN
@VSN:我也搜索了那个特定函数的源代码,但没有找到。但即使找到一个实现也不能得出结论,因为另一个实现可能不同。然而,这肯定是有趣的。 - Mark Wilkins
感谢您的辛苦:D - VSN
从性能角度考虑,询问顺序是有意义的。 - haelix

0

仅需从逻辑上考虑一下,想必它们并非都标记为可读的单个原子操作,而 epoll_wait 可能每次调用时只返回 1 个可用的 fd。依赖其输出顺序毫无意义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接