同步和非同步關注的是訊息通訊機制 (synchronous communication/ asynchronous communication)
所謂同步,就是在發出乙個呼叫時,在沒有得到結果之前,該呼叫就不返回。但是一旦呼叫返回,就得到返回值了。
換句話說,就是由呼叫者主動等待這個呼叫的結果。
而非同步則是相反,呼叫在發出之後,這個呼叫就直接返回了,所以沒有返回結果。換句話說,當乙個非同步過程呼叫發出後,呼叫者不會立刻得到結果。而是在呼叫發出後,被呼叫者通過狀態、通知來通知呼叫者,或通過**函式處理這個呼叫。
舉個通俗的例子:
你打**問書店老闆有沒有《分布式系統》這本書,如果是同步通訊機制,書店老闆會說,你稍等,」我查一下",然後開始查啊查,等查好了(可能是5秒,也可能是一天)告訴你結果(返回結果)。
而非同步通訊機制,書店老闆直接告訴你我查一下啊,查好了打**給你,然後直接掛**了(不返回結果)。然後查好了,他會主動打**給你。在這裡老闆通過「回電」這種方式來**。
阻塞和非阻塞關注的是程式在等待呼叫結果(訊息,返回值)時的狀態.
阻塞呼叫是指呼叫結果返回之前,當前執行緒會被掛起。呼叫執行緒只有在得到結果之後才會返回。
非阻塞呼叫指在不能立刻得到結果之前,該呼叫不會阻塞當前執行緒。
還是上面的例子:
你打**問書店老闆有沒有《分布式系統》這本書,你如果是阻塞式呼叫,你會一直把自己「掛起」,直到得到這本書有沒有的結果,如果是非阻塞式呼叫,你不管老闆有沒有告訴你,你自己先一邊去玩了, 當然你也要偶爾過幾分鐘check一下老闆有沒有返回結果。
在這裡阻塞與非阻塞與是否同步非同步無關。跟老闆通過什麼方式回答你結果無關。
併發:當有多個執行緒在操作時,如果系統只有乙個cpu,作業系統只能把cpu執行時間劃分成若干個時間段,再將時間段分配給各個執行緒執行,在乙個時間段的快速的切換不同的執行緒**執行。(幾件事可以換著做,但在某一時刻只能做一件事)
並行:當系統有多個cpu時,可以存在當乙個cpu執行乙個執行緒時,另乙個cpu可以執行另乙個執行緒,兩個執行緒互不搶占cpu資源,可以同時進行。(可以同時做多件事)
舉個例子:
小a吃飯吃到一半,**來了,小a一直到吃完了以後才去接。既不支援併發也不支援並行
小a吃飯吃到一半,**來了,小a停了下來接了**,接完後繼續吃飯。支援併發
小a吃飯吃到一半,**來了,小a一邊打**一邊吃飯。支援並行
你打**問書店老闆有沒有《分布式系統》這本書,如果是同步阻塞,書店老闆會說,你稍等,」我查一下",然後開始查啊查,等查好了(可能是5秒,也可能是一天)告訴你結果(返回結果)。而你在這期間只能眼巴巴舉著**等待結果,啥也幹不了,直到**那頭返回結果。
同步:老闆這種通知結果的方式(讓你不要掛**等待,相當於呼叫不返回)就是同步方式
阻塞:在等待結果期間你啥都幹不了(相當於呼叫結果返回之前,當前執行緒會被掛起),就是阻塞
還是上面的例子,但是在等待結果的過程中你把手機開到擴音放電腦旁邊,然後啟動了lol,快樂的等待。
同步:老闆這種通知結果的方式依然是同步方式
非阻塞:在等待結果期間你可以打lol(相當於在不能立刻得到結果之前,該呼叫不會阻塞當前執行緒),即非阻塞
如果書店老闆直接告訴你我查一下啊,查好了打**給你,然後直接掛**了(不返回結果)。你在家裡幹等著(阻塞),然後查好了,他會主動打**給你。
非同步:老闆說完直接掛**了(相當於呼叫在發出之後,這個呼叫就直接返回了,沒有返回結果),直到查到資訊後再打**通知你(通過回電**)
阻塞:你在這期間幹等著(程序的狀態即為阻塞)
書店老闆通知方式不變(非同步),但是這期間你不用幹等著,而是可以做別的事情(非阻塞)
總的來說,同步非同步針對的是呼叫者和被呼叫者的訊息通訊機制,阻塞非阻塞是描述呼叫者呼叫期間的狀態,併發並行是cpu的性質(支援併發或並行)
同步非同步?阻塞非阻塞?併發並行?
阻塞呼叫是指呼叫結果返回之前,呼叫者會進入阻塞狀態等待。只有在得到結果之後才會返回。非阻塞呼叫是指在不能立刻得到結果之前,該函式不會阻塞當前執行緒,而會立刻返回。同步 在發出乙個同步呼叫時,在沒有得到結果之前,該呼叫就不返回。非同步 在發出乙個非同步呼叫後,呼叫者不會立刻得到結果,該呼叫就返回了。同...
併發 並行,阻塞 非阻塞,同步 非同步
1.阻塞,非阻塞 乙個執行緒 程序經歷的5個狀態,建立,就緒,執行,阻塞,終止。各個狀態的轉換條件如上圖,其中有個阻塞狀態,就是說當執行緒中呼叫某個函式,需要io請求,或者暫時得不到競爭資源的,作業系統會把該執行緒阻塞起來,避免浪費cpu資源,等到得到了資源,再變成就緒狀態,等待cpu排程執行。定義...
同步 非同步 阻塞 非阻塞 併發 並行
乙個小故事 故事 小a燒開水。出場人物 小a 出場道具 普通水壺 放在煤氣灶上的那種,為了方便簡稱 水壺 會響的水壺 水燒開了會響的那種,簡稱 響壺 故事目的 小a要拿開水泡咖啡 小a為了實現目的,指定了4個計畫 1 用水壺燒水,並且站在煤氣灶旁邊,啥事不幹,兩眼直勾勾的盯著水壺,等水燒開。燒開後就...