使用epoll&socket的總結


1. epoll 中使用et方式觸發,只需EPOLL_CTL_ADD一次,把EPOLLIN  EPOLLOUT 事件全注冊,每個socket只需創建add一次,其事件就會

     一直在epoll中,當然,socketclose 后應DEL掉。

2. ET觸發方式是指當fd到狀態發生變化時通知,如read buffer從無到有,write buffer從滿到不滿才會通知。

3. 若要將accept的文件描述符添加到epoll,那么同樣需要將socket設置為nonblock,調用accept時要循環讀,直到EWOULDBLOCK發生。

4. socket 無論是read/write事件,均需要循環讀,知道EWOULDBLOCK發生。

5. accept 觸發too many open file 時,accept到buffer已滿,若close掉一些socket,仍然不能接受新連接,參見第2條,所以需要調用EPOLL_CTL_MOD重新觸發accept事件,還一個簡單方案,監聽用到fd注冊epoll是使用LT觸發。

 

示例代碼:

https://ffown.googlecode.com/svn/trunk


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM