[英]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
(即40
在epoll_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.