水平觸發與邊緣觸發

1.水平觸發level trigger  LT(狀態達到)進程

  當被監控的文件描述符上有可讀寫事件發生時,會通知用戶程序去讀寫,若是用戶一次讀寫沒取完數據,他會一直通知用戶,若是這個描述符是用戶不關心的,它每次都返回通知用戶,則會致使用戶對於關心的描述符的處理效率下降。事件

  複用型IO中的select和poll都是使用的水平觸發方式。資源

2.邊緣觸發edge trigger  ET(狀態改變)效率

  當被監控的文件描述符上有可讀寫事件發生時,會通知用戶程序去讀寫,它只會通知用戶進程一次,這須要用戶一次把內容讀取玩,相對於水平觸發,效率更高。若是用戶一次沒有讀完數據,再次請求時,不會當即返回,須要等待下一次的新的數據到來時纔會返回,此次返回的內容包括上次未取完的數據。監控

  信號驅動型IO使用的是邊緣觸發方式。select

  epoll既支持水平觸發也支持邊緣觸發,默認是水平觸發。請求

3.比較程序

  水平觸發是狀態達到後,能夠屢次取數據。這種模式下要注意屢次讀寫的狀況下,效率和資源利用率狀況。數據

       邊緣觸發是狀態改變一次,取一次數據。這種模式下讀寫數據要注意一次是否能讀寫完成。epoll

相關文章
相關標籤/搜索