阻塞 非阻塞,同步異步

 

 

 

形象理解:前端

阻塞非阻塞: 針對前段而言,阻塞將請求發給後臺,會一直等待後臺的返回值,其它什麼也不作,非阻塞將請求發給後臺,而後作其餘的事,後臺會本身將返回值發送給前端;異步

同步異步:針對後臺而言,同步處理請求,處理完了不會主動提示前端,異步處理完請求後,會提示前端;同步

 

另外一種理解以下(來源:知乎):it

老張愛喝茶,廢話不說,煮開水。
出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。
1 老張把水壺放到火上,立等水開。(同步阻塞)
老張以爲本身有點傻
2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。(同步非阻塞)
老張仍是以爲本身有點傻,因而變高端了,買了把會響笛的那種水壺。水開以後,能大聲發出嘀~~~~的噪音。
3 老張把響水壺放到火上,立等水開。(異步阻塞)
老張以爲這樣傻等意義不大
4 老張把響水壺放到火上,去客廳看電視,水壺響以前再也不去看它了,響了再去拿壺。(異步非阻塞)
老張以爲本身聰明瞭。


所謂同步異步,只是對於水壺而言。
普通水壺,同步;響水壺,異步。
雖然都能幹活,但響水壺能夠在本身完工以後,提示老張水開了。這是普通水壺所不能及的。
同步只能讓調用者去輪詢本身(狀況2中),形成老張效率的低下。

所謂阻塞非阻塞,僅僅對於老張而言。
立等的老張,阻塞;看電視的老張,非阻塞。
狀況1和狀況3中老張就是阻塞的,媳婦喊他都不知道。雖然3中響水壺是異步的,可對於立等的老張沒有太大的意義。因此通常異步是配合非阻塞使用的,這樣才能發揮異步的效用。


 
同步和異步關注的是 消息通訊機制;
阻塞和非阻塞關注的是 程序在等待調用結果( 消息, 返回值)時的狀態;
相關文章
相關標籤/搜索