【发布时间】:2011-02-27 12:07:55
【问题描述】:
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
我对 maxevents 参数有点困惑。假设我想编写一个可以处理多达 10k 个连接的服务器。那么我会将 maxevents 定义为 10000,还是由于某种原因应该更低?
【问题讨论】:
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
我对 maxevents 参数有点困惑。假设我想编写一个可以处理多达 10k 个连接的服务器。那么我会将 maxevents 定义为 10000,还是由于某种原因应该更低?
【问题讨论】:
Maxevents 就是*events 指向的struct epoll_events 数组的长度。
如果内核在那个时候有超过这个数量的事件要提供给你的程序,它会发现它不应该因为你不期望在那个特定的 _wait 中返回这么多。
您可能需要为您的程序试验此最佳大小。最佳尺寸甚至可能因架构而异。对于被轮询的少量文件描述符,您可以很容易地将maxevents 设置为文件数(并相应地调整events 数组的大小),但是同时需要注意所有文件的可能性很低,所以您可能可以使用较低的maxevents 值。
【讨论】: