i/o復用使用場合:
1、當客戶處理多個描述符時(通常是互動式輸入和網路套接字)。
2、乙個客戶同時處理多個套接字是可能的。
3、如果乙個tcp伺服器既要處理監聽套接字,又要處理已連線套接字。
4、當乙個伺服器既要處理tcp,又要處理udp。
5、當乙個伺服器要處理多個服務或者多個協議。
unix下5種i/o模型:
1)阻塞式i/o;
2)非阻塞式i/o;
3)i/o復用(select和poll);
4)訊號驅動式i/o(sigio);
5)非同步i/o(posix的aio_系列函式);
對於乙個套接字上的輸入操作,第一步通常涉及等待資料從網路到達。當所等待分組到達時,它被複製到核心中的某個緩衝區。第二步就是把資料從核心緩衝區複製到應用程序快取區。
訊號驅動式i/o是由核心通知我們何時可以啟動乙個i/o操作,而非同步i/o模型是由核心通知我們i/o操作何時完成。
同步i/o和非同步i/o對比:
同步i/o操作導致請求程序阻塞,直到i/o操作完成;
非同步i/o操作不導致請求程序阻塞。
前四種模型都是同步操作,因為其中真正的i/o操作(recvfrom)將阻塞程序。只有非同步i/o模型與posix定義的非同步i/o相匹配。
第6章 I O復用 select和poll函式
如果乙個或多個 i o條件滿足,我們可以被通知到。場合 1.當客戶處理多個描述字時 2.乙個客戶同時處理多個套介面 3.乙個 tcp伺服器既要處理監聽套介面,又要處理已連線的套介面 4.乙個伺服器既要處理 tcp,又要處理 udp 5.乙個伺服器要處理多個服務或者多個協議 i o模型 l阻塞l 非阻...
第8章 標準IO庫 6
8.5 字串流 iostream標準庫支援記憶體中輸入 輸出,只要將流與儲存在程式記憶體中的string物件 起來即可。此時,可使用iostream輸入和輸出操作符讀寫這個string物件。標準庫定義了三種型別的字串流 istringstream,由istream派生而來,提供讀string的功能。...
UNIX網路程式設計6 IO復用
i o多路復用是指核心一旦發現程序指定的乙個或者多個i o條件準備就緒,它就通知該程序。i o復用適用於以下場合 當客戶處理多個描述符 一般是互動式輸入或網路套接字 必須適用i o復用 套接字是乙個抽象出來的概念,本質上也是乙個檔案描述符 當乙個客戶處理多個套接字時,這種情況很少見,但也可能出現 當...