最通俗易懂的例子來解釋什麼是同步和異步

同步異步

同步和異步的區別

同步(Synchronous)和異步(Asynchronous)

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

 

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

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

——以上例子來源網絡,作者不明。

網友A個人理解:同步異步是對燒開水這個行爲而言的,並不是水壺。老張燒開水一直等着開是同步,燒了開水就不管了直接去看電視就是異步。

網友B:同步就是燒開水,要自己來看開沒開;異步就是水開了,然後水壺響了通知你水開了。阻塞是燒開水的過程中,你不能幹其他事情(即你被阻塞住了);非阻塞是燒開水的過程裏可以幹其他事情。同步與異步說的是你獲得水開了的方式不同。阻塞與非阻塞說的是你得到結果之前能不能幹其他事情。兩組概念描述的是不同的內容。

網友C:個人覺得同步異步不是對水壺而言的,而是看水開了這個狀態是老張主動去發現的還是水壺通知的。

同步是指:當程序1調用程序2時,程序1停下不動,直到程序2完成回到程序1來,程序1才繼續執行下去。  
異步是指:當程序1調用程序2時,程序1徑自繼續自己的下一個動作,不受程序2的的影響。

同步是指:發送方發出數據後,等接收方發回響應以後才發下一個數據包的通訊方式。  
異步是指:發送方發出數據後,不等接收方發回響應,接着發送下個數據包的通訊方式。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章