IO模型同步與非同步阻塞與非阻塞的區別

2022-07-26 18:06:17 字數 550 閱讀 2259

關注點:同步和非同步關注的是訊息通訊機制

同步:所謂同步,就是在發出乙個*呼叫*時,在沒有得到結果之前,該*呼叫*就不返回。但是一旦呼叫返回,就得到返回值了。

換句話說,就是由*呼叫者*主動等待這個*呼叫*的結果。

非同步:而非同步則是相反,*呼叫*在發出之後,這個呼叫就直接返回了,所以沒有返回結果。換句話說,當乙個非同步過程呼叫發出後,呼叫者不會立刻得到結果。而是在*呼叫*發出後,*被呼叫者*通過狀態、通知來通知呼叫者,或通過**函式處理這個呼叫。

關注點:阻塞和非阻塞關注的是程式在等待呼叫結果(訊息,返回值)時的狀態

阻塞:阻塞呼叫是指呼叫結果返回之前,當前執行緒會被掛起。呼叫執行緒只有在得到結果之後才會返回。

非阻塞:非阻塞呼叫指在不能立刻得到結果之前,該呼叫不會阻塞當前執行緒。

同步非同步與阻塞非阻塞沒有必然的關係。同步非同步說的是服務方,服務方接受到請求之後是在同一連線返回響應還是結束通話連線等待完成操作之後另行通知。阻塞與非阻塞說的是呼叫方,呼叫方等待服務返回的時候是不是流程阻塞不執行其他操作。

引用自知乎問答:

io操作占用cpu很少,沒必要阻塞cpu:

I O模型 阻塞 非阻塞 I O復用 同步 非同步

第一手教育 2016 10 14 11 25 i o模型不論在實際使用還是準備筆試面試中都是重要的內容,參考unix網路程式設計進行總結如下。尤其注意紅色標註處 1.明確i o考察的物件和流程 參考unix網路程式設計,乙個輸入操作通常包括兩個不同的階段 1 等待資料準備好 2 從核心向程序複製資料...

網路IO模型(同步非同步,阻塞非阻塞)

摘錄自 網路應用需要處理的無非兩大類問題 網路i o,資料計算 網路io的模型大致有如下幾種 同步模型 阻塞非阻塞 多路復用 訊號驅動式 非同步io 網路io的本質是socket的讀取,socket在linux系統被抽象為流,io可以理解為對流的操作。這個操作分為2個階段 1 等待流資料準備 2 從...

談談 IO模型 同步 非同步 阻塞 非阻塞

linux os中,有幾種常見的io模型 程式進行io讀 寫操作通常包括幾個階段 資料準備 資料更新 阻塞式io 程式發起read io請求,核心接受到系統呼叫並開始對磁碟進行讀取資料到核心緩衝區,這一過程程式所在的執行緒是阻塞狀態的。資料準備好,核心需要將資料複製到使用者程序空間,複製過程也是阻塞...