2012-03-19 208 views
4

比方说,我已经按照指定的顺序设置了一组文件描述符,比如说8,9,10,11,12,并对它们读取数据做一个epoll_wait()。返回epoll中的文件描述符的顺序是什么?

epoll_wait返回的数据将在套接字8,10和11上读取。请问在epoll数组中返回的文件描述符的顺序是8,10和11还是它们可能混乱?

+1

为什么这么重要? – 2012-03-19 12:50:32

+0

我需要它来实现...如果它的顺序是相同的,那么我会随时使用我想要的索引并检查它是否已设置。 – VSN 2012-03-19 12:56:29

回答

3

The man page没有特别说明任何关于订单的事情,所以在你打电话时依靠订单可能不是一个好主意。即使他们在一次执行中依次返回,他们也可能不在另一次执行中。最好假设他们可以以任何顺序返回。

+0

我看了这里: “http://lxr.free-electrons.com/source/fs/eventpoll.c” 为线索。我在这里找不出多少:( – VSN 2012-03-19 15:06:16

+0

@VSN:我也在寻找源代码,但找不到任何具体的功能,但是即使找到一个实现也不会是确定的,因为另一个实现可能会有所不同,但是,肯定会很有趣 – 2012-03-19 15:10:47

+0

感谢您的所有麻烦:D – VSN 2012-03-20 11:10:51

0

只要从逻辑上思考一下。大概他们并不是全部被标记为单一原子操作的可读性,并且epoll_wait可能只是每次调用时返回1个fd。依靠输出的顺序是没有意义的。