栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Epoll的两种工作模式

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Epoll的两种工作模式

Epoll的两种工作模式 LT模式(水平触发)

假设委托内核检测读事件-检测fd的读缓冲区
都缓冲区有数据-epoll检测到了会给用户通知

用户不读数据,数据一直在缓冲区,epoll会一直通知用户只读了一部分数据,epoll会通知缓冲区的数据读完了,不通知

LT模式是默认的工作模式,同时支持阻塞和非阻塞套接字两种模式。
内核告诉你一个文件描述符是否就绪,然后你可以对这个就虚的fd进行IO操作,如果你不做任何操作的话,内核还是会继续通知你。(只要是缓冲区内有数据,内核就通知)。

ET模式(边沿触发)

假设委托内核检测读事件-检测fd的读缓冲区
都缓冲区有数据-epoll检测到了会给用户通知

用户不读数据,数据一直在缓冲区,epoll不通知用户只读了一部分数据,epoll不通知缓冲区的数据读完了,不通知

只支持非阻塞套接字。当描述符变为就绪时,内核会通过EPOLL告诉你。然后他会假设你知道文件描述符已经就绪,并且不会再为那个文件描述符发送更多的就绪通知。除非文件描述符又重回非就绪态。

如何设置ET模式
struct epoll_event{
    __uint32_t events;
    epoll_data_t data;
}

可能出现的错误:
EINTR:被某进程中断。
EAGAIN:fd被标志位非阻塞,数据以读完如果再读的话,会返回EAGAIN。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734459.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号