**目錄** 1. 阻塞IO 2. 非阻塞IO 3. 信號驅動IO 4. 異步IO (同步概念) 5. select「多路轉接」IO(篇幅所限放置下一篇博客中,持續更新哦)
在咱們開始描述以前,請有必要的瞭解這個概念
任何在IO過程當中,其本質上均發生了倆個行爲,「等待」,「拷貝」,等待數據準備完成,從內核中拷貝到用戶空間
能夠想象,IO過程當中浪費的大量時間均是在等待消耗,那麼反之,爲提升IO效率,最爲核心的思想就是想辦法讓「等待時間」儘可能少!異步
阻塞IOide
信號驅動IO函數
異步/同步概念code
到這裏相信你們都很疑惑,那麼「異步/同步」與「阻塞/非阻塞」不是同樣的嗎?
答:阻塞與非阻塞,主要強調操做是否當即返回;
異步與同步,主要強調功能完成的時序性,關注的是 「消息通訊機制」
這裏引用經典實例來輔助理解:
異步通訊機制:
異步與同步的標準模板是這樣的:blog
所謂同步,就是在發出一個調用時,在沒有獲得結果以前,該調用就不返回。可是一旦調用返回,就獲得返回值了。換句話說,就是由調用者主動等待這個調用的結果。
而異步則是相反,調用在發出以後,這個調用就直接返回了,因此沒有返回結果。換句話說,當一個異步過程調用發出後,調用者不會馬上獲得結果。而是在調用發出後,被調用者經過狀態、通知來通知調用者,或經過回調函數處理這個調用。接口
阻塞與非阻塞:進程
阻塞和非阻塞關注的是程序在等待調用結果(消息,返回值)時的狀態.
因爲篇幅所制,將select多路複用IO模型以及poll,epollIO模型,以及相應TCP通訊代碼,將在將來幾篇博客上附上連接;
到這裏你們就清楚了吧!哈哈,感謝您的觀看;回調函數