生活随笔
收集整理的這篇文章主要介紹了
异步与同步IO
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
異步IO
調用一個異步IO函數接收數據時,不管有沒有數據,該函數都會立即返回。調用異步IO函數時候要指定一個接收數據的緩沖區,還要指定一個回調函數
非阻塞IO和異步IO區別
非阻塞IO:不停地調用IO函數檢查數據是否到來,如果數據到來,就要卡在IO函數把數據從內核緩沖區復制到用戶緩沖區,然后IO函數才能返回異步IO: 不需要不停的調用IO函數檢查數據是否到來,只需要調用1次。內核檢查到數據的到來,內核負責把數據復制到指定緩沖區(復制期間完全不會卡住應用程序的執行流程),然后內核負責通知數據到來 同步IO
系統函數select和poll用的就是同步IO,需要調用2個函數才能獲取數據。
先調用select函數,判斷是否有數據(該函數只能判斷是否有數據,不能讀取數據)如果沒有數據就卡在那等如果有數據就select返回,之后調用recvfrom函數去取數據。取數據涉及數據從內核空間復制到用戶空間,所以復制數據時還是要卡著優點:IO復用(accept到多個客戶端socket可以放在一起)
Reactor模式:IO復用+異步方法使用非阻塞調用(回調函數+數據緩沖區)
總結
以上是生活随笔為你收集整理的异步与同步IO的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。