1.水平触发level trigger LT(状态达到)进程
当被监控的文件描述符上有可读写事件发生时,会通知用户程序去读写,若是用户一次读写没取完数据,他会一直通知用户,若是这个描述符是用户不关心的,它每次都返回通知用户,则会致使用户对于关心的描述符的处理效率下降。事件
复用型IO中的select和poll都是使用的水平触发方式。资源
2.边缘触发edge trigger ET(状态改变)效率
当被监控的文件描述符上有可读写事件发生时,会通知用户程序去读写,它只会通知用户进程一次,这须要用户一次把内容读取玩,相对于水平触发,效率更高。若是用户一次没有读完数据,再次请求时,不会当即返回,须要等待下一次的新的数据到来时才会返回,此次返回的内容包括上次未取完的数据。监控
信号驱动型IO使用的是边缘触发方式。select
epoll既支持水平触发也支持边缘触发,默认是水平触发。请求
3.比较程序
水平触发是状态达到后,能够屡次取数据。这种模式下要注意屡次读写的状况下,效率和资源利用率状况。数据
边缘触发是状态改变一次,取一次数据。这种模式下读写数据要注意一次是否能读写完成。epoll