linuxI/O多路复用中关于epoll_wait的疑问

shayne000 2019-06-29 10:34:15
函数原型:int epoll_wait( int epfd, struct epoll_event * events, int maxevents, int timeout );
epfd:epoll专用的文件描述符
events:分配好的 epoll_event 结构体数组
maxevents:maxevents表示本次可以返回的最大事件数目
timeout:超时时间,单位为毫秒
返回值:成功:返回满足监听条件的事件数目,如返回 0 表示已超时

没有搞清楚epoll_wait()到底是在什么情况下返回呢,如果是在一有其监测到的事件准备就绪就返回的话,除了多个事件同时就绪的情况,是不是一般情况下都应该返回1呢?那maxevents参数的作用是什么呢?
除了多个事件同时准备就绪还有其他情况会返回大于1的值吗?
...全文
155 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hideoubush 2019-07-03
  • 打赏
  • 举报
回复
epoll_wait()每次会把每次获取到的触发事件都放到events这个events数组里,而maxevents就代表这个数组的最大容量,所以也就是每次epoll能获取到的最大事件数量。 epoll_wait()的返回值是本次获取到的实际事件数量,也就是本次要处理的事件数量。 epoll_wait()到底什么情况下返回这个跟事件触发模式有关,有ET和LT两种模式。

18,773

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧