我正在尝试实现我自己的apache服务器,我正在用epoll编写socket服务器,events数组需要确定的元素数量,但是如果我不知道应用程序的总请求量,我应该如何定义这个数量。
events
struct epoll_event events[What would be the size?];
我什么都没试过。我搜索了一些信息,但Apache似乎没有使用epoll,它有自己的实现(或者这是我所理解的)。
cs7cruho1#
您可以以与确定用于阅读未知长度的文件的缓冲区大小完全相同的方式确定此值:使用固定大小的缓冲区,然后读取,然后继续阅读,直到到达文件的末尾。同样的原则也适用于这里。您计算出事件缓冲区的大小,然后开始重复阅读事件。对于使用epoll_wait的每个应用程序,没有通用的公式。这是您首先必须做出有根据的猜测,然后仔细监视实际结果,如果需要的话,还可以微调事件缓冲区的大小。epoll_wait将根据其参数阻塞,直到至少有一个事件要读取。然后,在任何事件(原谅双关语)进行,并读取到指定的事件数。如果有更多的事件可用,剩余的事件保持未读状态,然后将由下一次调用epoll_wait读取。
epoll_wait
1条答案
按热度按时间cs7cruho1#
您可以以与确定用于阅读未知长度的文件的缓冲区大小完全相同的方式确定此值:使用固定大小的缓冲区,然后读取,然后继续阅读,直到到达文件的末尾。
同样的原则也适用于这里。您计算出事件缓冲区的大小,然后开始重复阅读事件。
对于使用
epoll_wait
的每个应用程序,没有通用的公式。这是您首先必须做出有根据的猜测,然后仔细监视实际结果,如果需要的话,还可以微调事件缓冲区的大小。epoll_wait
将根据其参数阻塞,直到至少有一个事件要读取。然后,在任何事件(原谅双关语)进行,并读取到指定的事件数。如果有更多的事件可用,剩余的事件保持未读状态,然后将由下一次调用
epoll_wait
读取。