同步和非同步 阻塞和非阻塞

2021-04-28 17:05:08 字數 920 閱讀 6057

阻塞與非阻塞。所謂阻塞方式的意思是指, 當試圖對該檔案描述符進行讀寫時, 如果當時沒有東西可讀,或者暫時不可寫, 程式就進入等待狀態, 直到有東西可讀或者可寫為止。而對於非阻塞狀態, 如果沒有東西可讀, 或者不可寫, 讀寫函式馬上返回, 而不會等待。預設情況下, 三述符處於阻塞狀態。

同步非同步與阻塞和非阻塞是兩種不同的概念來著

同步非同步指的是通訊模式,而阻塞和非阻塞指的是在接收和傳送時是否等待動作完成才返回

所以不能混淆這四個磁。

以下是我的一些理解,請大家多指教

首先是通訊的同步,主要是指客戶端在傳送請求後,必須得在服務端有回應後才傳送下乙個請求。所以這個時候的所有請求將會在服務端得到同步

其次是通訊的非同步,指客戶端在傳送請求後,不必等待服務端的回應就可以傳送下乙個請求,這樣對於所有的請求動作來說將會在服務端得到非同步,這條請求的鏈路就象是乙個請求佇列,所有的動作在這裡不會得到同步的。

阻塞和非阻塞只是應用在請求的讀取和傳送。

在實現過程中,如果服務端是非同步的話,客戶端也是非同步的話,通訊效率會很高,但如果服務端在請求的返回時也是返回給請求的鏈路時,客戶端是可以同步的,這種情況下,服務端是相容同步和非同步的。相反,如果客戶端是非同步而服務端是同步的也不會有問題,只是處理效率低了些。

同步=阻塞式,非同步=非阻塞式

同步和非同步都只針對於本機socket而言的

同步模式下,比如reciev和send,都要確保收到或傳送完才返回,繼續執行下面的**

不然就阻塞在**,所以,同步模式下,一般要用到執行緒來處理。

非同步模式就不同了,不管有沒有收到或傳送出去,他都馬上返回,繼續執行下面的**,結果又訊息通知。

同步socket是一種阻塞機制,發出去的資料非要等對方收到才返回,就像sendmessage。  

非同步socket是一種非阻塞機制,發出去的資料不管對方是否收到立即返回,就像postmessage。

同步 非同步 阻塞和非阻塞

同步 非同步 阻塞和非阻塞 在進行windowsapi winsock 網路程式設計時,我們常常見到同步 非同步 阻塞和非阻塞四種呼叫方式。這些方式其實都可以擴充套件為廣義的概念,幫助我們理解多執行緒,多程序,實時作業系統等更廣的概念。同步 synchronic 所謂同步,就是在發出乙個功能呼叫時,...

同步 非同步 阻塞和非阻塞

在進行網路程式設計時,我們常常見到同步 非同步 阻塞和非阻塞四種呼叫方式。這些方式彼此概念並不好理解。所謂同步,就是在發出乙個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。按照這個定義,其實絕大多數函式都是同步呼叫 例如sin,isdigit等 但是一般而言,我們在說同步 非同步的時候,特指那些需...

同步 非同步 阻塞和非阻塞

這幾個概念總是記了又忘。寫下來。同步和非同步是針對應用程式和核心的互動而言的 同步指的是使用者程序觸發io操作並等待或者輪詢的去檢視io操作是否就緒,非同步是指使用者程序觸發io操作以後便開始做自己的事情,而當io操作已經完成的時候會得到io完成的通知。阻塞和非阻塞是針對於程序在訪問資料的時候,根據...