五種IO模型(通過舉例簡單說明)

2021-09-22 13:13:52 字數 829 閱讀 7559

1.阻塞i/o模型

老李去火車站買票,排隊三天買到一張退票。

耗費:在車站吃喝拉撒睡 3天,其他事一件沒乾。

2.非阻塞i/o模型

老李去火車站買票,隔12小時去火車站問有沒有退票,三天後買到一張票。耗費:往返車站6次,路上6小時,其他時間做了好多事。

3.i/o復用模型

1.select/poll

老李去火車站買票,委託黃牛,然後每隔6小時**黃牛詢問,黃牛三天內買到票,然後老李去火車站交錢領票。

耗費:往返車站2次,路上2小時,黃牛手續費100元,打**17次

2.epoll

老李去火車站買票,委託黃牛,黃牛買到後即通知老李去領,然後老李去火車站交錢領票。

耗費:往返車站2次,路上2小時,黃牛手續費100元,無需打**

4.訊號驅動i/o模型

老李去火車站買票,給售票員留下**,有票後,售票員**通知老李,然後老李去火車站交錢領票。

耗費:往返車站2次,路上2小時,免黃牛費100元,無需打**

5.非同步i/o模型

老李去火車站買票,給售票員留下**,有票後,售票員**通知老李並快遞送票上門。

耗費:往返車站1次,路上1小時,免黃牛費100元,無需打**

五種IO模型

再講io模型之前,給大家舉乙個釣魚的例子。張三去釣魚,他釣魚的時候一動不動,一直看著魚竿,看有沒有動,無論是誰叫他,他都不動,只有等魚梢動了 魚上鉤了 他才會動 李四去釣魚,他沒有像張三那樣瓷楞著,只是時不時的輪詢檢查魚竿有沒有動。一直在動。王五也來釣魚,他就比較聰明了,在魚竿上掛個鈴鐺,只要鈴鐺響...

五種IO模型

阻塞io 在核心將資料準備好之前,系統呼叫會一直等待,所有的套接字都是預設阻塞方式 非阻塞io 如果核心還沒有將資料準備好,系統呼叫會直接返回,並返回錯誤碼 非阻塞io往往需要以迴圈的方式反覆讀寫檔案描述符,這個過程稱為輪詢,對cpu的浪費較大,一般只在特定的場景下使用 訊號驅動io 核心將資料準備...

五種IO模型

1.五種io分為阻塞i o 非阻塞i o 訊號驅動io 多路復用i o select 和 poll 非同步i o 前四個被稱為同步io。1.1乙個輸入操作一般有兩個不同的階段 2.1阻塞io 程序呼叫recvfrom,從使用者態轉到核心態,直到資料準備好且拷貝到應用程式緩衝區或者出錯 最常見的錯誤是...