古詩詞大全網 - 成語查詢 - epoll的兩種觸發模式ET、LT

epoll的兩種觸發模式ET、LT

epoll的兩種觸發模式分別是ET(edge trigger)邊緣觸發和LT(level triggered)水平觸發。

epoll的默認觸發模式是LT,select、poll都是LT觸發。

緩沖區只要有數據未讀就會導致epoll_wait返回。

上次讀數據未讀完仍會導致epoll_wait返回。

水平觸發模式下阻塞和非阻塞並沒有什麽區別,因為沒有可讀時間就緒的話epoll_wait不會返回。

緩沖區出現新未讀數據才會導致epoll_wait返回。

上次讀數據未讀完不會導致epoll_wait返回。

邊緣觸發模式下事件就緒只會通知壹次,為了保證數據成功被讀取或寫入,在非阻塞模式下,采用循環的方式進行讀寫,直到完成或出現異常時退出。

如果不采用循環的方式進行讀寫,就會造成數據讀/寫不完的情況,因為下壹次再調用epoll_wait就不會再通知了,所以職能采用循環的方式進行讀寫。但是如果嘗試采用循環的方式進行讀寫,則會造成永久阻塞。

造成阻塞的原因只有沒有數據可讀/可寫,在非阻塞模式下出現沒有數據可讀/可寫可以返回相應的錯誤信息設置errno(EWOULDBLOCK),但是阻塞模式就會進入阻塞狀態,而處理的該fd永遠也不可能再有可讀數據了,所以就被永久阻塞了。