當EPOLLONESHOT指定時,電平觸發和邊緣觸發模式有什麼區別?epoll:當EPOLLONESHOT指定時,電平觸發和邊沿觸發之間的差異
還有類似的問題here。 「蹲小貓」的答案似乎並不正確(據我所知,其他答案並不回答我的問題)。
我已嘗試以下步驟:
- 服務器發送2個字節到客戶端,而客戶在
epoll_wait
- 客戶端返回等待從
epoll_wait
,然後讀取1個字節。 - 客戶端再次發生事件(由於EPOLLONESHOT)
- 客戶端再次調用
epoll_wait
。這裏,對於這兩種情況下(LT & ET),epoll_wait
不等待,但(由「臥虎藏龍小貓」相反的答案)立即返回 - 客戶端可以讀取第二個字節
有什麼區別當EPOLLONESHOT指定時,是否在ET & ET之間?
如果你可以在上面發佈你的代碼,這將是非常好的。我相信你做了你聲稱你做過的事情,但這會讓下一個出現的人變得更好。 –
@ShacharShemesh:不幸的是,這個代碼是一個更大框架的一部分。但是,我剛剛檢出了內核源代碼,據我瞭解,如果指定EPOLLONESHOT,則LT和ET之間確實沒有區別。我會等待一段時間,如果沒有回答,我會回答我自己的問題。 – geza
這是當你中斷用晚餐寫答案時發生的事情。人們在你缺席的情況下找到自己的答案:-) –