2012-03-19 212 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。依靠輸出的順序是沒有意義的。