闡釋同步與異步,阻塞與非阻塞的差別
- A.同步與異步
-
- 同步和異步關注的是消息通信機制
- B.阻塞與非阻塞
-
- 阻塞和非阻塞關注的是程式在等待調用傳回結果時的狀态.
- [舉例說明]:
A.同步與異步
同步和異步關注的是消息通信機制
同步:當一個程序在執行某個請求的時候,該程序要一直等待該請求的結果傳回後,才能進行後續的執行。
異步:當一個程序在執行某個請求的時候,該程序不必一直等待調用結果的傳回,而是繼續執行後續的操作。當被調用方有結果傳回時,會callback回調通知該程序進行處理。
B.阻塞與非阻塞
阻塞和非阻塞關注的是程式在等待調用傳回結果時的狀态.
阻塞:是指調用結果傳回之前,目前線程會被挂起。一直處于等待消息通知,不能夠執行其他業務,調用線程隻有在得到結果之後才會傳回。
非阻塞:指在該程序在等待時,不會阻塞目前線程,而會執行其他操作。
[舉例說明]:
我要幹兩件事:燒一壺水和看電視,但是燒水在廚房,看電視在客廳。廚房裡有2個水壺,一個是普通的水壺,另一個是水開了會鳴笛的水壺。我可以:
1.用普通的水壺燒,人在廚房裡看着,水開了才能去客廳看電視。 ---------> (同步,阻塞)
2.用普通的水壺燒,人去客廳看電視,隔幾分鐘去廚房看一下。 ------------> (同步,非阻塞)
3.用會鳴笛的水壺,人在走廊裡傻等着水壺鳴笛。 ----------------------------> (異步,阻塞)
4.用會鳴笛的水壺,人去看電視,聽見水壺叫了再去看。 ---------------------> (異步,非阻塞)
普通水壺,需要值守: 同步
會叫的水壺,有回報通知,不需要值守: 異步
等着看電視的我: 阻塞(狀态)
看着電視的我: 非阻塞(狀态)
是以,異步往往配合非阻塞,才是效率最大化。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiIXZ05WZj91YpB3I3p1dw1GT0ljMZpXWU1ENoJDWth3VZlXOW1kdJBDTzgTeOZXUYpVd1kmYr50MZVXSYlFMG1GZolTeMZTTINGMShUYvwlbj5yZtlmbkN3YuQnclZnbvN2Ztl2Lc9CX6MHc0RHaiojIsJye.jpg)
/