水平触发(level trigger,LT)和边缘触发(edge trigger,ET)
水平触发:如果文件描述来符已经就绪可以非阻塞的执行IO操作了,此时会触发通知.允许在任意时刻重复检测IO的状态.select,poll就属于水平触发.
边缘源触发:如果文件描述符自上次状态改变后有新的IO活动到来,此时会触发通知.在收到一个IO事件通知后要尽可能多的执行IO操作,因为如果在一次通知中没有百执行完IO那么就需要等到下一次新的IO活动到来才能获取到就绪的描述符.信号驱动式IO就属于边缘触发.
写过单片机的人可以从另一方理解水平触发和边缘触发的区别:度
水平触发:就是只有高电平(1)或低电平(0)时才触发通知问,只要在这两种状态就能得到通知.上面提到的只要有数据可读答(描述符就绪)那么水平触发的epoll就立即返回.
边缘触发:只有电平发生变化(高电平到低电平,或者低电平到高电平)的时候才触发通知.上面提到即使有数据可读,但是io状态没有变化epoll也不会立即返回.