我从select向epoll移植了一个程序,以增加我们可以处理的套接字数量。我已经在epoll FD中添加了套接字,可以愉快地读写。
然而,即使我使用的是级别触发事件,我也担心套接字可能会耗尽。我担心的情况是,准备好的插座比准备好的多
epoll_event
结构。我知道下次打电话的时候
epoll_wait
这会给我剩下的人,但我想知道我把他们按什么顺序放在规定的人身上,上一次和这次谁没有被淘汰。
举个例子:
假设我有10个插座连接并添加到
epoll
fd。我的记性只够5分钟
epoll_事件
结构。让我们假设在两次
等等
,所有10个套接字都接收数据。第一个
等等
将返回5
epoll_事件
用于处理的结构,假设是套接字1-5。我处理这5个套接字,当我这样做时,更多的数据进入,所有10个套接字都有更多的数据要读取。我进入
等等
再来5次
epoll_事件
结构。
我的问题是,第二次打电话时,我会得到5个插座
等等
.会不会是插座1-5,因为它们被添加到
埃波尔
FD优先?或者我会得到套接字6-10,因为这些事件是在套接字1-5收到更多数据之前引发的?
本质上是
等等
与FIFO队列类似,或者它只是扫描内部套接字列表(从而优先于列表中的第一个套接字)。
编辑:
这是Linux内核v4。9.62