日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

epoll的再次认识

發布時間:2023/12/13 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 epoll的再次认识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用mmap加速內核與用戶空間的消息傳遞。
這 點實際上涉及到epoll的具體實現了。無論是select,poll還是epoll都需要內核把FD消息通知給用戶空間,如何避免不必要的內存拷貝就很 重要,在這點上,epoll是通過內核于用戶空間mmap同一塊內存實現的。而如果你想我一樣從2.5內核就關注epoll的話,一定不會忘記手工 mmap這一步的。


順便看一下 EPOLLET 和 EPOLLLT
EPOLLLT 是默認行為,基本上就是說,只要一個文件描述符處于就緒狀態,epoll 就會不停的通知你有事件發生。傳統的 select/poll 都是這樣的

EPOLLET 是新的方式,只在一個文件描述符新處于就緒的時候通知一次,之后不管數據有沒有讀完,都不會再通知,當然,有新數據到還是會通知的。所以,用 EPOLLET 的時候,一定要把文件描述符設置為 non-blocking,而且最好是一直讀數據,讀到返回 EAGAIN 才停下


EPOLLOUT事件:
EPOLLOUT事件只有在連接時觸發一次,表示可寫,其他時候想要觸發,那要先準備好下面條件:
1.某次write,寫滿了發送緩沖區,返回錯誤碼為EAGAIN。
2.對端讀取了一些數據,又重新可寫了,此時會觸發EPOLLOUT。
簡單地說:EPOLLOUT事件只有在不可寫到可寫的轉變時刻,才會觸發一次,所以叫邊緣觸發,這叫法沒錯的!
其實,如果真的想強制觸發一次,也是有辦法的,直接調用epoll_ctl重新設置一下event就可以了,event跟原來的設

總結

以上是生活随笔為你收集整理的epoll的再次认识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。