為了弄清這幾個概念還和同事討論了一番,然後還查了一些資料,總結一下。
同步與非同步是在客戶端向服務端發請求的時候,客戶端做出的處理方式。
同步:客戶端向服務端發出乙個請求,客戶端就一直在等著服務端的返回結果。
非同步:客戶端向服務端發出乙個請求並向伺服器說:你處理完了通知我一聲哦,我就不在這兒一直等著了。
阻塞與非阻塞是發起任務的人(執行緒)的當前狀態。
阻塞:執行緒a執行到某一行因為x(花費時間)被阻塞了,就一直等待x先執行完了再執行執行緒a。(掛起)
非阻塞:執行緒a執行到某一行因為x(花費時間)被阻塞了,就不管x了,接著處理執行緒a後面的程式。(執行)
自己想到在食堂打飯的例子:
同步:我到食堂打飯,阿姨給我了乙個排號,我拿著排號一直等在視窗等待到端飯。
非同步:我到食堂打飯,阿姨給我了乙個排號,我就坐在食堂板凳上,等阿姨叫我這個號我再去端飯。
所以同步與非同步強調的是處理方式。
阻塞:我在等著端飯的過程中,我什麼事情也不幹,就這樣一直等著。
非阻塞:我在等著端飯的過程中,我拿起手機看了看新聞。
所以阻塞與非阻塞強調的是執行緒的狀態。
所以又推演出同步阻塞、同步非阻塞和非同步阻塞、非同步非阻塞概念。
這樣理解起來就不會搞混淆了。
同步與非同步 阻塞與非阻塞區別
老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻塞 老張還是覺得自己有點傻,於是變高階了,買了把會響笛的那種水壺...
同步與非同步 阻塞與非阻塞
設想一下這個情景,你列了個購物清單 a,b,c,d 去商店買東西,你向老闆詢店問有沒有你想要的a i o操作 於是老闆去倉庫檢視,這個時候假如你在前台等待老闆查詢結果回來那麼這種詢問等待的方式為同步,此時你相當於被掛起,是處於阻塞狀態的,而如果你沒有在前台等待老闆的查詢而是接著進店逛看有沒有你想要的...
同步與非同步,阻塞與非阻塞
同步與非同步阻塞與非阻塞 阻塞和非阻塞關注的是程式在等待呼叫結果 訊息,返回值 時的狀態.阻塞呼叫是指呼叫結果返回之前,當前執行緒會被掛起。呼叫執行緒只有在得到結果之後才會返回。非阻塞呼叫指在不能立刻得到結果之前,該呼叫不會阻塞當前執行緒。還是上面的例子,你打 問書店老闆有沒有 分布式系統 這本書,...