繁体   English   中英

epoll_wait()中的maxevents参数和events数组大小

[英]maxevents parameter in epoll_wait() and the events array size

在epoll使用中,它通常如下所示:

struct epoll_event ev,events[20];
epfd=epoll_create(256);
。。。
nfds=epoll_wait(epfd,events,40,500);

有些文章说, maxevents参数epoll_wait (即40epoll_wait(epfd,events,40,500); )不应超过大小参数epoll_create (即256 )。

我认为maxevents参数在ev, events[20]不应超过20 ,因为事件只能注册到20个事件元素; 否则,如果有40个插座是活动的,那会发生什么?

顺便说一句,如果我注册超过20个套接字并且有超过20个活动事件(套接字),但事件数组events[20]只有20个事件,会发生什么?

epoll_wait任何一次调用中,你最多epoll_wait获得尽可能多的事件,但当然,如果有多个事件排队,事件也不会丢失 - 你只需在以后的电话中获取它们。 既然你无论如何epoll_wait在一个循环中调用epoll_wait ,那根本不应该是一个问题。

我能想到的一个有趣的考虑因素是你同时从同一个epoll-fd读取多个线程。 在这种情况下,事件数组的大小决定了单个线程处理的事件数量(即较小的数字可能会提供更大的并行度)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM