阻塞式i/o
如建立socket連線,需要等待3次握手完成才可繼續向下執行程式,這期間就會造成cpu浪費,程式設計時用到的最多的,也是最初級的,
非阻塞式i/o
如建立socket連線,設定setblocking,則建立連線語句執行後立刻返回,無需等待,相比阻塞式i/o缺點是,需要不停訪問資源是否準備好,因此非阻塞式i/o會一直耗費cpu資源。
i/o復用
利用i/o復用可以避免非阻塞i/o的不停訪問缺陷,利用select程序,但select程序也是阻塞是,不過select的不同點是可以同時監聽多個socket連線,有乙個連線狀態發生改變,就可以立馬處理。
訊號驅動式i/o
目前用的較少,先建立乙個訊號處理程式,作業系統準備好資料後主動傳送乙個訊號處理。
非同步i/o
如posix下的aio_系列函式,windows下的iocp(減少thread切換帶來的額外開銷),現實很少用aio,他的效能提公升相比多路復用並沒有提上公升很多,更多的是多路復用,而且其程式設計比多路復用更複雜
Unix下5種I O模型
unix下的5中i o模型 阻塞式i o 非阻塞式i o i o復用 select poll 訊號驅動式i o sigio 非同步i o posix的aio 系列函式 乙個輸入操作通常包括兩個不同階段 1 等待資料準備好 2 從核心向程序複製資料 對於套接字上的輸入操作,第一步等待資料從網路中到達,...
Unix下5種I O模型
unix下i o模型主要分為5種 1 阻塞式i o 2 非阻塞式i o 3 i o復用 select和poll 4 訊號驅動式i o 5 非同步i o 1 阻塞式i o模型 unix基本的套接字介面,例如 connect accept read write recv send recvfrom se...
Unix下5種基本的I O模型
unix下5種基本的i o模型 1.阻塞i o 2.非阻塞i o 3.i o復用 select和poll 4.訊號驅動i o sigio 5.非同步i o posix.1的aio 系列函式 unix中乙個輸入操作一般有兩個不同的階段 1.等待資料準備好。2.從核心到程序拷貝資料。對於乙個sockt上...