bio建立連線或者io讀寫操作都是阻塞的,所有多個客戶端為了滿足及時響應,我們可能需要主動開啟多執行緒
nio建立連線或者io讀寫操作都是非阻塞的,如果不實用多路復用,但是想滿足相應,可能需要迴圈獲取連線,如果成功了,將連線記錄到list中,迴圈中再套乙個迴圈遍歷list,進行io讀寫操作
nio+多路復用(epoll是linux特有的時間複雜度o(1)當有io就緒時被動的被event通知到,連線數量無限制;select大多數作業系統都支援時間複雜度o(n)每次都是核心去遍歷所有連線拿到就緒的連線數量有限制;poll跟select差不多,差別是連線數量無限制)
redis、nginx都是優秀的nio多路復用框架的實現
epoll poll select參考資料:
Linux IO多路復用
一.select 函式 include include include int select int n,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout fd clr int fd,fd set set f...
I O多路復用
一 五種i o模型 1 阻塞i o模型 最流行的i o模型是阻塞i o模型,預設情形下,所有套介面都是阻塞的。我們以資料報套介面為例來講解此模型 我們使用udp而不是tcp作為例子的原因在於就udp而言,資料準備好讀取的概念比較簡單 要麼整個資料報已經收到,要麼還沒有。然而對於tcp來說,諸如套介面...
Linux C Socket多路復用
1.迴圈伺服器 udp伺服器 udp迴圈伺服器的實現非常簡單 udp伺服器每次從套接字上讀取乙個客戶端的請求,處理,然後將結果返回給客戶機.可以用下面的演算法來實現.socket bind while 1 因為udp是非面向連線的,沒有乙個客戶端可以老是佔住服務端.只要處理過程不是死迴圈,伺服器對於...