epoll_wait:maxevents

som*_*guy 10 c linux events epoll

int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
Run Code Online (Sandbox Code Playgroud)

我对maxevents参数有点困惑.假设我想编写一个可以处理多达10k连接的服务器.我会将maxevents定义为10000,还是应该因某种原因而降低?

nat*_*ose 13

Maxevents只是struct epoll_events指向的数组的长度*events.

如果内核当时有超过该数量的事件要提供给您的程序,它将会看到它不应该因为您不希望在该特定的_wait中返回许多事件.

您可能需要为您的程序试验最佳大小.最佳尺寸甚至可能因架构而异.对于被轮询的少量文件描述符,您可以很容易地设置maxevents为文件数量(并相应地调整events数组的大小),但同时注意所有文件的可能性很低,因此您可能可以使用较低的maxevents价值.