1. 程式人生 > >同步、異步與阻塞、非阻塞

同步、異步與阻塞、非阻塞

架構 客戶端 多路復用 錯誤 同步非阻塞 函數 鏈接 調用 同步阻塞

同步阻塞,用戶空間的應用程序執行一個系統調用,這意味著應用程序會一直阻塞,直到系統調用完成為止(數據傳輸完成或者發生錯誤)。

同步非阻塞,設備以非阻塞形式打開,這意味著 io 操作不會立刻完成,需要應用程序調用多次來等待完成。

同步和異步 1)同步:發出一個調用時,在沒有得到結果前,該調用就不返回,一旦返回就有結果。2)異步:調用在發出之後就直接返回,所以沒有返回結果,換句話說,當一個異步調用發生後,調用者不會立即得到結果,而是在調用發生後,被調用者通過狀態通知來通知調用者,或者通過回調函數來處理這個調用。

阻塞和非阻塞 1)阻塞:調用結果返回之前,當前線程會被掛起,調用線程只有在得到結果之後才會返回。2)非阻塞:不能立刻得到結果之前,該調用不會阻塞當前線程。

BIO:同步並阻塞,一個連接一個線程,適用於鏈接數量小且固定的架構。 NIO:同步非阻塞:一個請求一個線程,客戶端發送的鏈接請求都會註冊到多路復用器

上,多路復用器輪訓到鏈接有 io 請求時才啟動一個線程進行處理,適用於鏈接比較多,比較短。

AIO:異步非阻塞,一個有效請求一個線程,適用於鏈接數目多且長。

同步、異步與阻塞、非阻塞