五種IO模型

2021-09-30 01:10:48 字數 547 閱讀 9512

阻塞io

在核心將資料準備好之前,系統呼叫會一直等待,所有的套接字都是預設阻塞方式

非阻塞io

如果核心還沒有將資料準備好,系統呼叫會直接返回,並返回錯誤碼

非阻塞io往往需要以迴圈的方式反覆讀寫檔案描述符,這個過程稱為輪詢,對cpu的浪費較大,一般只在特定的場景下使用

訊號驅動io

核心將資料準備好的時候,使用sigio訊號通知應用程式進行io操作

io多路轉接

從過程上看和阻塞io類似,實際在於io多路轉接能夠同時等待多個檔案描述符的就緒狀態,

非同步io

由核心在資料拷貝完成時,通知應用程式

任何io過程中, 都包含兩個步驟. 第一是等待, 第二是拷貝. 而且在實際的應用場景中, 等待消耗的時間往 往都遠遠高於拷貝的時間. 讓io更高效, 最核心的辦法就是讓等待的時間盡量少.

五種IO模型

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

五種IO模型

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

五種IO模型

在網路環境下,通俗的講,將io分為兩步 1.等 2.資料搬遷。如果要想提高io效率,需要將等的時間降低。五種io模型包括 阻塞io 非阻塞io 訊號驅動io io多路轉接 非同步io。其中,前四個被稱為同步io。在介紹五種io模型時,我會舉生活中釣魚的例子,加深理解。a拿著一支魚竿在河邊釣魚,並且一...