我正在研究Linux系统调用,发现了一些epoll
方面的问题让我感到困惑。比如,我创建了一个epoll
实例:
epollfd = epoll_create(50);
下一步,我在
for
循环中注册了50个文件描述符:for(i=0; i<50; i++){
// open file "file-i".txt
// construct epoll_event
// register new file descriptor with epoll_ctl(epollfd, EPOLL_CTL_ADD ...
现在我们有50个文件,准备好进行操作(读或写--无所谓)。我们将MAX_EVENTS设置为3:
#define MAX_EVENTS 3
...
struct epoll_event events[MAX_EVENTS]
...
epoll_wait(epollfd, events, MAX_EVENTS, -1)
所有50个文件都已准备好,我们只需要其中的3个。哪些文件将在
events
数组中呢?
- [1,2,3] -- 按照它们被添加到epoll的顺序,前三个文件
- [48,49,50] -- 按照它们被添加到epoll的顺序,最后三个文件
- [34, 7, 15] -- 随机选择3个文件
- 其他任何选项
poll
可能会针对添加描述符的情况做出特殊处理。 - jxh