epoll 水平觸發 邊緣觸發

2021-07-26 10:05:21 字數 226 閱讀 1993

水平觸發:只要緩衝區還有資料,核心就還會通知使用者。使用者如果第一次讀取資料沒讀完,即使沒有任何新的操作觸發,還是可以繼續通過epoll_wait來獲取事件

邊緣觸發:只有當新事件觸發的時候,才能通過epoll_wait來獲取資料,如果第一次讀取資料沒讀完,就只能等待下一次事件觸發來獲取餘下的資料。換句話說,即使緩衝區還有資料,但沒有新事件觸發,使用者是獲取不到事件的(不能讀取餘下資料)

reference:

epoll 水平觸發 邊緣觸發

先簡單比較一下level trigger 和 edge trigger 模式的不同。讓我們換乙個角度來理解et模式,事實上,epoll的et模式其實就是socket io完全狀態機。當socket由不可讀變成可讀時,epoll的et模式返回read 事件。對於read 事件,開發者需要保證把讀取緩衝...

epoll 水平觸發與邊緣觸發

epoll也是實現i o多路復用的一種方法,為了深入了解epoll的原理,我們先來看下epoll水平觸發 level trigger,lt,lt為epoll的預設工作模式 與邊緣觸發 edge trigger,et 兩種工作模式。使用脈衝訊號來解釋lt和et可能更加貼切。level是指訊號只需要處於...

epoll的水平觸發和邊緣觸發

即level triggered and edge triggered 簡單說來 level triggered 只要事件是處於就緒狀態,你每詢問一次,就告訴你一次它處於就緒狀態。edge triggered 只有在狀態改變的時候告訴你,這也是為什麼et模式下,建議用非阻塞的socket。下面我們來...