簡體   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