知识卡片

LT与ET是安全与性能的权衡

普通读书笔记卡

内容

epoll水平触发(LT)只要缓冲区非空/非满就持续触发,容易实现但可能重复触发;边缘触发(ET)只在状态切换时触发一次,效率更高但极易漏读(”short read”问题,一次没读完就永远错过)。实践默认选更安全的LT,因为ET漏读没有第二次机会。发散:这是”触发一次要求逻辑绝对完备”与”触发多次但容错”间的通用工程取舍。

参考来源

- 位置:第4章《操作系统》4.3.3节「select、epoll的LT与ET」(源文件:_epub-src/text/part0011.html) - 结论依据:原文明确说明水平触发(LT)只要缓冲区非空/非满就一直触发,边缘触发(ET)只在状态切换时触发一次、容易漏读(short read问题),实际开发中大家倾向用LT因为ET容易漏事件没有第二次机会,直接支持卡片对LT/ET是安全与性能权衡、实践默认选更安全的LT的论述。 - 原始内容:"水平触发:读缓冲区只要不为空,就会一直触发读事件……边缘触发:读缓冲区的状态,从空转为非空的时候触发一次……对于ET模式,要避免'short read'问题……在实际开发中,大家一般都倾向于用LT……因为ET容易漏事件,一次触发如果没有处理好,就没有第二次机会了。"