假设我 epoll_create1() 并且只对 EPOLLIN 感兴趣 | 用于 1 个插座的 EPOLLET。
我是否有可能为该套接字获得 epoll_wait() > 1(假设 timeout=-1)并且事件是 EPOLLIN?
或者即使有多个数据包,epoll_wait() 也会返回 1(假设分散在几秒钟内,我在 epoll_wait 循环中故意暂停程序)?
提前致谢。
epoll_wait
返回事件的数量,根据文档,它等于“准备好 I/O 的文件描述符的数量”。所以你不能得到比你注册的文件描述符数量更多的事件。
根据这些文档,epoll_wait
它应该返回“准备就绪”的 fd 的数量。如果你只传入一个 fd,那么你不应该得到超过 1 个返回 - 这肯定是epoll_wait
实现中的一个错误,并且它已经存在了一段时间,所以我希望它经过了相当好的测试(除非你正在做一个全新的架构或 C 库的 beta 版本等)。
此外,超时 = 0,而不是 -1。