我是靠谱客的博主 谨慎花卷,最近开发中收集的这篇文章主要介绍epoll之水平触发和边缘触发,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

epoll中有两种触发模式,分别为
1、水平触发
水平触发为Level Triggered,简称LT。
水平触发关心的是缓冲区的状态,当缓冲区可读的时候,就会发出通知,也就是当缓冲区中只要有数据就会发出通知。

2、边缘触发
边缘触发为Edge Triggered,简称ET。
边缘触发关心的是缓冲区状态的变化,当缓冲区状态发生变化的时候才会发出通知,比如缓冲区中来了新的数据。

从上述表述可能不太看得出他们之间的区别,我们设想这样一个场景,当一次read()读取没有读取完缓冲区中的数据时,LT和ET的区别:
1、LT,此时缓冲区中还有数据,会继续发通知

2、ET,此时缓冲区状态并没有发生变化,并没有来新的数据,就不会发通知,在新数据到来之前,之前剩余的数据就无法取出。

所以在ET模式下,当读取数据的时候,一定要循环读取数据,直到缓冲区中的数据全部读取完成,一次性将数据取出。

最后

以上就是谨慎花卷为你收集整理的epoll之水平触发和边缘触发的全部内容,希望文章能够帮你解决epoll之水平触发和边缘触发所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部