ET和LT的区别

epoll下 LTET区别 文章目录 ltet 是epoll操作文件描述符的两种方式,lt 是 效率比较高的poll,et 是 epoll 的高效模式。 lt 当检测到epoll_wait 上有就绪事件的时候,可以不立即执行,当下次再次调用epoll_wait时还会提醒 et 当检测到epoll_wait 上有就绪的事件的时候,就必须处理该事件,否则下次调用epoll_wait 的时候,也不会提醒。 ... 阅读详情

概念

ET(边沿触发)和LT(电平触发)是 epoll对文件描述符的两种操作。

LT的工作模式:当文件描述符上的事件就绪后,如果事务没有处理完成或者没有处理,那么下一次epoll会提醒应用程序。

ET的工作模式:当文件描述符上的事件就绪后,如果事务没有处理完成或者没有处理,那么下一次epoll则不会提醒应用程序,这就要求我们的应用程序在收到一次提醒后,必须将当下的数据处理完成。

内核实现

 

LT和ET的非阻塞模式

LT是阻塞与非阻塞模式二者皆可的,而ET模式需要采用阻塞模式,造成这样差别的原因与socket有关。

下面这一段来自于:https://blog.csdn.net/liuxuejiang158blog/article/details/12290725解释了原因。

二者的差异在于level-trigger模式下只要某个socket处于readable/writable状态,无论什么时候进行epoll_wait都会返回该socket;而edge-trigger模式下只有某个socket从unreadable变为readable或从unwritable变为writable时,epoll_wait才会返回该socket。在epoll的ET模式下,正确的读写方式为:读:只要可读,就一直读,直到返回0,或者 errno = EAGAIN;写:只要可写,就一直写,直到数据发送完,或者 errno = EAGAIN

也就是说,ET模式是在不可读写变化到可读写的时候,才会触发。
 

epoll ETLT模式详解 ,但是因为没有输出换行,所以buffer中的内容一直存在,下次epoll_wait的时候,虽然有写空间但是ET模式下不再返回写就绪。2)程序向标准输出输出”welcome to epoll’s world”换行符,因为标准输出为控制台的时候缓冲是“行缓冲”,所以换行符导致buffer中的内容清空,当有旧数据被发送走时,即buffer中待写的内容变少的时候会触发fd状态的改变,所以下次epoll_wait会返回写就绪,如此循环往复。LT:水平触发,效率会低于ET触发,尤其在大并发,大流量的情况下。 阅读详情

相关推荐

epoll的LTET模式以及阻塞非阻塞

epoll的LTET模式以及阻塞非阻塞

冯同学的博客 2251

ETLT的原理区别

前言 学习自用,有错麻烦提出,感谢 基本知识 ETLT是IO复用的两种模式,ET早于LT出现(依据TODO) 对于几种IO复用,selectpoll只支持LT(?TODO) level triggered edge trigger,起源于电频的激发,TODO ET是一次事件只会触发一次,如一次客户吨发来消息,fd可读,epoll_wait返回.等下次再调用epoll_wait则不会返回了 LT是一次事件会触发多次,如一次客户端发消息,fd可读,epoll_wait返回,不处理这个fd,再

ptgood的博客 1万+

io多路复用:epoll水平触发(LT边沿触发(ET)的区别优缺点

在进行ET模式的正式分析之前,我们来举个例子简单地了解下ETLT:假设我们通过fork函数创建了父子两个进程,并通过匿名管道来通信,在子进程中,我们一次向管道写入10个字符数据,为"aaaa\nbbbb\n";每隔5s写入10个字符数据;

2401_86353562的博客 1642

epoll中的ETLT模式区别

epoll中的ETLT模式一、水平触发(LT边沿触发(ET)二、例子1.例子:水平触发(LT)2.例子:边沿触发(ET) 一、水平触发(LT边沿触发(ET) 在电路中的有水平触发边沿触发的概念,在epoll读取事件下,水平触发可以理解为,蓝色那一部分,只要存在可读的情况,就会一直读取。而边沿触发,可以理解为红色箭头所指向,发生跳变的部分,就会触发一次。 在epoll中 events=EPOLLIN 为读取事件,LT模式 events=EPOLLIN|EPOLLET 为读取事件,ET模式 e

菊头蝙蝠的博客 5302

EPOLL LTET区别

原帖:http://www.vimer.cn/2009/10/epoll%E5%B7%A5%E4%BD%9C%E6%A8%A1%E5%BC%8F%E8%AF%A6%E8%A7%A3.html select/epoll的区别 select的特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,select需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。但是

wangxmin2005的专栏 9715

举源码实例来说明epoll之LTET模式的区别

一、先来看看官方的说辞         epoll 对文件的描述符的操作有两种模式 : LT(Level Trigger, 电平触发)模式 ET(Edge Trigger ,边沿触发)模式。LT模式是默认的工作模式,这个模式下epoll相当于一个效率较高的poll。当往epoll中内核事件表中注册EPOLLET事件时,epoll将以ET模式来操作该文件描述符。ET是epoll的高效模式。 ...

$firecat利白的代码足迹$ 1525

epoll下电平触发LT边沿触发ET区别

LT 电平触发    高电平触发 EPOLLIN 事件  数据可读 内核中的socket接收缓冲区 为空  低电平  不会触发 内核中的socket接收缓冲区 不为空  高电平  会触发 EPOLLOUT事件 数据可写 内核中的socket发送缓冲区不满   高电平 内核中的socket发送缓冲区 满    低电平 ET 边沿触发 由低电平-》高电平

晴天的专栏 2676

epoll LT ET 区别 | Nginx epoll 原理 listend 用 LT

最近学 muduo nginx 写网络库,总结一下 epoll 上遇到的一些问题学习的笔记,主要是对 LTET 平滑升级里的一些点理解一下。

锐龙处理器 3083

epoll两种类型ETLT区别(结合实际例子)

目前银联采用的方法是LT模式,如果epoll可读(大于某个边沿值),读取需要的数据长度,从epollset中del掉,处理完逻辑之后再加入epollset,如果接收缓冲区仍然有数据,因为是LT模式,会继续通知,重复上述过程(读取需要的长度...) 淘米框架则采用ET模式,可读(只通知一次,后面不再通知),则一直读知道EAGAIN,需要处理分包粘包等问题。 在一个非阻塞的so

cws1214的专栏 3681

ET/LT模式区别

一、ET模式的文件描述符(fd): 当epoll_wait检测到fd上有事件发生并将此事件通知应用程序后,应用程序必须立即处理该事件,因为后续的epoll_wait调用将不再向应用程序通知这一事件。 epoll_wait只有在客户端第一次发数据是才会返回,以后即使缓冲区里还有数据,也不会返回了。epoll_wait是否返回,是看客户端是否发数据,客户端发数据...

YMY_mine的博客 1万+

(转) epoll的LTET模式的区别

LT模式:epoll就是一个快速版poll,可读可写就绪条件传统poll一致 ET模式:为了避免Starvation,建议          1)文件描述符设置为非阻塞          2)只在read或write返回EAGAIN后,才能调用下一次epoll_wait

lizhi200404520的专栏 682

EPOLL LTET模式区别详解

LT:level trigger, 水平触发模式ET:edge trigger, 边缘触发模式相同点:都是通过epoll_wait从EPOLL等待队列读取激活事件区别: 1. LT模式读取激活事件后,如果还有未处理的数据。事件会重新放入EPOLL等待队列。 2. ET模式读取激活事件,直接从EPOLL等待队列移除,不管是否有未处理的数据。 事件放入EPOLL等待队列条件: 读事件 1. 从不可读变...

tpip260的博客 3234

epoll LTET区别

原帖:http://www.vimer.cn/2009/10/epoll%E5%B7%A5%E4%BD%9C%E6%A8%A1%E5%BC%8F%E8%AF%A6%E8%A7%A3.html select/epoll的区别 select的特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,select需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。但是

远方的专栏 2553

LT模式ET模式区别

LT模式:电平触发 当epoll_wait检测到文件描述符上有事件发生,并将此事件通知应用程序之后,应用程序可以不立即处理该事件,当下次调用epoll_wait时,还会向应用程序通知这个事件,直到此事件被处理。 如果用户没有处理就绪的文件描述符或者没有处理完,则内核会再次提醒 ET模式:边沿触发 (高效模式) 当epoll_wait检测到文件描述符上有事件发生,并将此事件通知应用程序之后,...

Love_cch的博客 1823

poll,epoll,select,poll与epoll的区别LT模式与ET模式的区别

poll 以下图片来自Liunx高性能服务器编程 poll与select的区别 poll是个加强版的select poll能检测的文件描述符的数目更大(但是每个计算机都有自己的最大数量) poll注册的事件类型更多 poll既可以在liunx上可以,也可以在windowsunix上用 select是数组将文件描述符交给set_fd,在交给select,而poll直接将文件描述符交给poll #define _GNU_SOURCE #include<stdio.h> #incl

weixin_45510561的博客 1641

epoll两种模式区别-ET-LT

文章目录概述代码实例socket可读事件LT触发条件:socket可读事件ET触发条件:socket可写事件LT触发条件:socket可写事件ET触发条件:LTET模式应用场景LT模式下处理请求流程ET模式下处理请求流程参考 概述 epoll有两种工作模式: 边缘触发模式(Edge Trigger,ET) 水平触发模式(Level Trigger,LT) 默认模式 这两中模式用电平来表示, LT模式: 1. 低电平 => 高电平 2. 处于高电平状态 ET模式: 1. 低电平 =>

qq_29257201的博客 1457

ET LT两种触发模式的区别 | 努力的小白

ETLT 两种触发模式的区别 研究了好久,直接上图吧 , 个人认为还是很通俗易懂的 第一次写文章,用于记录学习。 如果能帮助到你,真是太好了 O(∩_∩)O

weixin_43904477的博客 316
上一篇: 二分查找与二分排序(直接插入排序的优化)
下一篇: OC控件--UITableView
pretysunshine
博客等级 码龄8年 7粉丝 16原创
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值