阻塞和非阻塞

來源:互聯網
上載者:User
阻塞與非阻塞。所謂阻塞方式的意思是指, 當試圖對該檔案描述符進行讀寫時, 如果當時沒有東西可讀,或者暫時不可寫, 程式就進入等待狀態, 直到有東西可讀或者可寫為止。而對於非阻塞狀態, 如果沒有東西可讀, 或者不可寫, 讀寫函數馬上返回, 而不會等待。預設情況下, 三述符處於阻塞狀態。 同步非同步與阻塞和非阻塞是兩種不同的概念來著
同步非同步指的是通訊模式,而阻塞和非阻塞指的是在接收和發送時是否等待動作完成才返回
所以不能混淆這四個磁。
以下是我的一些理解,請大家多指教
首先是通訊的同步,主要是指用戶端在發送請求後,必須得在服務端有回應後才發送下一個請求。所以這個時候的所有請求將會在服務端得到同步
其次是通訊的非同步,指用戶端在發送請求後,不必等待服務端的回應就可以發送下一個請求,這樣對於所有的請求動作來說將會在服務端得到非同步,這條請求的鏈路就象是一個請求隊列,所有的動作在這裡不會得到同步的。阻塞和非阻塞只是應用在請求的讀取和發送。在實現過程中,如果服務端是非同步話,用戶端也是非同步話,通訊效率會很高,但如果服務端在請求的返回時也是返回給請求的鏈路時,用戶端是可以同步的,這種情況下,服務端是相容同步和非同步。相反,如果用戶端是非同步而服務端是同步的也不會有問題,只是處理效率低了些。 同步=阻塞式,非同步=非阻塞式同步和非同步都只針對於本機 SOCKET而言的同步模式下,比如RECIEV和SEND,都要確保收到或發送完才返回,繼續執行下面的代碼不然就阻塞在哪裡,所以,同步模式下,一般要用到線程來處理。非同步模式就不同了,不管有沒有收到或發送出去,他都馬上返回,繼續執行下面的代碼,結果又訊息通知。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.