i/o 多路復用技術是為了解決程序或執行緒阻塞到某個 i/o 系統呼叫而出現的技術,使程序不阻塞於某個特定的 i/o 系統呼叫。
select()
,poll()
,epoll()
都是i/o多路復用的機制。i/o多路復用通過一種機制,可以監視多個描述符,一旦某個描述符就緒(一般是讀就緒或者寫就緒,就是這個檔案描述符進行讀寫操作之前),能夠通知程式進行相應的讀寫操作。但select()
,poll()
,epoll()
本質上都是同步i/o,因為他們都需要在讀寫事件就緒後自己負責進行讀寫,也就是說這個讀寫過程是阻塞的,而非同步i/o
則無需自己負責進行讀寫,非同步i/o
的實現會負責把資料從核心拷貝到使用者空間。
與多執行緒和多程序相比,i/o 多路復用
的最大優勢是系統開銷小,系統不需要建立新的程序或者執行緒,也不必維護這些執行緒和程序。
#include
#
linux下的IO模型詳解
開門見山,linux下的如中io模型 阻塞io模型,非阻塞io模型,io復用模型,訊號驅動io模型,非同步io模型,見下圖 接下來一一講解這5種模型 阻塞型io 最簡單的一種io模型,簡單理解就是死等,即程序或執行緒一直等待莫格條件,不滿足則一直等待。非阻塞型io 應用程序與核心互動,目的未達到之前...
linux下的IO模型詳解
開門見山,linux下的如中io模型 阻塞io模型,非阻塞io模型,io復用模型,訊號驅動io模型,非同步io模型,見下圖 接下來一一講解這5種模型 阻塞型io 最簡單的一種io模型,簡單理解就是死等,即程序或執行緒一直等待莫格條件,不滿足則一直等待。非阻塞型io 應用程序與核心互動,目的未達到之前...
IO詳解 常用io類
inputstream與reader 前者是位元組輸入流,讀取檔案內容,檔案需要先轉換成byte,才能讀取得到,如果是中文,可能會出現亂碼 後者是字元輸入流,可以讀取字串,特別是有中文的時候,可以使用此類,不會出現亂碼。outputstream 與writer 前者是位元組輸出流,資料儲存到文字中,...