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觸發。
示例代碼: