netty爲什麼選擇使用lt(水平模式)

epoll對文件描述符有兩種操作模式–LT(level trigger水平模式)和ET(edge trigger邊緣模式)

簡單來講,LT是epoll的默認操作模式,當epoll_wait函數檢測到有事件發生並將通知應用程序,而應用程序不一定必須立即進行處理,這樣epoll_wait函數再次檢測到此事件的時候還會通知應用程序,直到事件被處理。

而ET模式,只要epoll_wait函數檢測到事件發生,通知應用程序立即進行處理,後續的epoll_wait函數將不再檢測此事件。因此ET模式在很大程度上降低了同一個事件被epoll觸發的次數,因此效率比LT模式高。

解釋爲什麼epoll默認是LT的原因(超哥解釋,個人覺得還是非常不錯的)LT(level triggered):LT是缺省的工作方式,並且同時支持block和no-block socket。在這種做法中,內核告訴你一個文件描述符是否就緒了,然後你可以對這個就緒的fd進行IO操作。如果你不作任何操作,內核還是會繼續通知你的,所以,這種模式編程出錯誤可能性要小一點。傳統的select/poll都是這種模型的代表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章