IO中同步與非同步 阻塞與非阻塞的區別

2021-08-18 16:34:42 字數 719 閱讀 4895

(1)基本概念

阻塞和非阻塞描述的是使用者執行緒和系統呼叫互動時的的狀態:

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

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

同步和非同步描述的是使用者執行緒和核心互動時的方式:

同步:使用者執行緒與核心互動時,在得到核心回應結果前只能等待;

非同步:使用者執行緒在與核心互動時,不需要等核心回應結果,可以直接返回。

通俗理解(別人的理解):

同步非同步 指的是在客戶端

同步意味著 客戶端提出了乙個請求以後,在回應之前只能等待

非同步意味著 客戶端提出乙個請求以後,還可以繼續提其他請求

阻塞非阻塞 指的是伺服器端

阻塞意味著 伺服器接受乙個請求後,在返回結果以前不能接受其他請求

非阻塞意味著 伺服器接受乙個請求後,儘管沒有返回結果,還是可以繼續接受其他請求

(2)標準定義

posix對同步/非同步i/o的定義是:

同步i/o:導致請求程序阻塞,直到i/o操作完成。

非同步i/o:不導致請求程序阻塞。

根據這個定義,阻塞式i/o、非阻塞式i/o、i/o復用和訊號驅動i/o都是同步i/o,因為都會阻塞在將資料從核心空間複製到使用者空間階段。

只有非同步i/o與posix定義的非同步i/o匹配。

IO中同步 非同步與阻塞 非阻塞的區別

一 同步與非同步 概念解釋 同步和非同步 是針對應用程式和核心的互動而言的 同步指的是使用者程序觸發 io 操作並等待或者輪詢的去檢視 io 操作是否完成 而非同步是指使用者程序觸發 io 操作以後便開始做自己的事情,而當 io 操作已經完成的時候會得到 io 完成的通知。二 阻塞與非阻塞 阻塞 非...

IO中同步 非同步與阻塞 非阻塞的區別

一 同步與非同步 同步 非同步,它們是訊息的通知機制 1.概念解釋 a.同步 所謂同步,就是在發出乙個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。按照這個定義,其實絕大多數函式都是同步呼叫 例如sin isdigit等 但是一般而言,我們在說同步 非同步的時候,特指那些需要其他部件協作或者需要一...

IO中同步 非同步與阻塞 非阻塞的區別

一 同步與非同步 同步非同步關注的點在於訊息通訊的機制。舉例 同步 我去書店買書,老闆說等一等他需要去找書,而我在這裡等,那麼我整個買書的流程就屬於同步行為。非同步 我去書店跟老闆說我要買書,我要什麼書,老闆去找,找到了書打 給我,而我在老闆找書的過程中去做其他事情,而不是在書店等待,那麼我整個買書...