1. 程式人生 > >後臺面試經典問題-Epoll的兩種觸發方式

後臺面試經典問題-Epoll的兩種觸發方式

水平觸發LT和邊緣觸發ET

其中LT就是與select和poll類似,當被監控的檔案描述符上有可讀寫事件發生時,epoll_wait()會通知處理程式去讀寫。如果這次沒有把資料一次性全部讀寫完(如讀寫緩衝區太小),那麼下次呼叫 epoll_wait()時,它還會通知你在上次沒讀寫完的檔案描述符上繼續讀寫

ET:

當被監控的檔案描述符上有可讀寫事件發生時,epoll_wait()會通知處理程式去讀寫。如果這次沒有把資料全部讀寫完(如讀寫緩衝區太小),那麼下次呼叫epoll_wait()時,它不會通知你,也就是它只會通知你一次,直到該檔案描述符上出現第二次可讀寫事件才會通知你

由此可見,水平觸發時如果系統中有大量你不需要讀寫的就緒檔案描述符,而它們每次都會返回,這樣會大大降低處理程式檢索自己關心的就緒檔案描述符的效率,而邊緣觸發,則不會充斥大量你不關心的就緒檔案描述符,從而效能差異,高下立見。