1

假设我 epoll_create1() 并且只对 EPOLLIN 感兴趣 | 用于 1 个插座的 EPOLLET。

我是否有可能为该套接字获得 epoll_wait() > 1(假设 timeout=-1)并且事件是 EPOLLIN?

或者即使有多个数据包,epoll_wait() 也会返回 1(假设分散在几秒钟内,我在 epoll_wait 循环中故意暂停程序)?

提前致谢。

4

2 回答 2

2

epoll_wait返回事件的数量,根据文档,它等于“准备好 I/O 的文件描述符的数量”。所以你不能得到比你注册的文件描述符数量更多的事件。

于 2013-08-10T14:28:46.907 回答
1

根据这些文档,epoll_wait它应该返回“准备就绪”的 fd 的数量。如果你只传入一个 fd,那么你不应该得到超过 1 个返回 - 这肯定是epoll_wait实现中的一个错误,并且它已经存在了一段时间,所以我希望它经过了相当好的测试(除非你正在做一个全新的架构或 C 库的 beta 版本等)。

此外,超时 = 0,而不是 -1。

于 2013-08-10T14:31:05.897 回答