IO模型的比較分析

到目前爲止已經將將四個IO模型都介紹完了。

那麼啊阻塞IO、非阻塞IO、同步IO和異步IO的區別在哪?

阻塞IO和非阻塞IO的區別

調用blocking IO會一直block住對應的進程直到操作完成,而non-blocking IO在kernel還準備數據的情況下會立刻返回。

同步IO和異步IO的區別

兩者的區別就在於synchronous IO做”IO operation”的時候會將process阻塞。


經過上面的介紹,會發現non-blocking IO和asynchronous IO的區別還是很明顯的。

在non-blocking IO中,雖然進程大部分時間都不會被block,但是它仍然要求進程去主動的check,並且當數據準備完成以後,也需要進程主動的再次調用recvfrom來將數據拷貝到用戶內存。

而asynchronous IO則完全不同,它就像是用戶進程將整個IO操作交給了他人(kernel)完成,然後他人做完後發信號通知,在此期間,用戶進程不需要去檢查IO操作的狀態,也不需要主動的去拷貝數據。

發佈了685 篇原創文章 · 獲贊 157 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章