EPOLL两种工作模式
2022-04-28 11:10:44 0 举报
EPOLL两种工作模式
作者其他创作
大纲/内容
绑定端口号
写数据
LT
交给内核监听
Y
ET
遍历变化的文件描述符
创建epoll数组
EPOLLIN
int curfd = epevs[i].data.fd;
epev.events = EPOLLIN; epev.data.fd = cfd;
ET 模式在很大程度上减少了 epoll 事件被重复触发的次数,因此效率要比 LT 模式高。epoll工作在 ET 模式的时候,必须使用非阻塞套接口
EPOLL两种模式
读数据
ET模式在这种模式下,当描述符从未就绪变为就绪时,内核通过epoll告诉你。然后它会假设你知道文件描述符已经就绪,并且不会再为那个文件描述符发送更多的就绪通知,直到你做了某些操作导致那个文件描述符不再为就绪状态了。
LT模式内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的 fd 进行 IO 操作。如果你不作任何操作,内核还是会继续通知你的。
将监听文件描述符添加到epoll中
curfd == lfd?
LT/ET模式
for i in ret
将新连接的对象添加到epoll
EPOLLOUT
epev.events = EPOLLIN | EPOLLET; epev.data.fd = cfd;
LT模式下直接创建epoll对象
epevs[i].events
ET模式下将客户端文件描述符设置非阻塞
N
struct epoll_event epevs[1024];
创建socket
创建epoll实例
while(1)
接受连接
监听
创建新的epoll对象事件添加EPOLLET
int epfd = epoll_create(100);
收藏
0 条评论
下一页