標籤:

epoll 使用blocking socket是否會造成阻塞?

我在使用librtmp向某個cdn推流的時候,無法感知對方斷開連接,wireshark抓包有收到對方的fin,但是我發送任然有效,估計對方調用的是shutdown SHUTWR。對此,我使用了一個epoll去wait所有的連接,當recv返回&<=0的時候,我close這個流。由於librtmp本身是blocking socket,我現在不確信epoll_wait EPOLLIN去recv blocking socket是否會阻塞。


搜一下不難的。

為什麼 IO 多路復用要搭配非阻塞 IO??

www.zhihu.com圖標在使用Multiplexed I/O的情況下,還有必要使用Non Blocking I/O么 ??

www.zhihu.com圖標


select man page


epoll用阻塞socket沒有意義。


我的理解是這個recv不會阻塞。blocking recv之所以阻塞是因為底層沒有收到數據,但是epoll已經告訴應用層有數據,所以recv不會阻塞。

請指教


問題是,socket讀寫都阻塞了,epoll豈不很絕望


推薦閱讀:

linux下非阻塞io庫 epoll
Linux 3.x 中epoll的驚群問題?
大神們來看看這樣架構 使用epoll有沒有問題?
epoll LT/ET 深度剖析
現在 epoll 單機(4G內存)並發量最大能達到多少?

TAG:epoll | TCPIP |