簡單理解同步與異步


何謂同步

一句話總結:必須一件一件事做,等前一件做完了才能做下一件事

進程同步:就是在發出一個功能調用時,在沒有得到結果之前,該調用就不返回,這時程序是出於阻塞的,只有接收到返回的值或消息后才往下執行其他的命令。  

例子

就是實時處理(如打電話),比如服務器一接收客戶端請求,馬上響應,這樣客戶端可以在最短的時間內得到結果,但是如果多個客戶端,或者一個客戶端發出的請求很頻繁,服務器無法同步處理,就會造成涌塞。  

同步如打電話,通信雙方不能斷(我們是同時進行,同步),你一句我一句,這樣的好處是,對方想表達的信息我馬上能收到,但是,我在打着電話,我無法做別的事情。

何謂異步

一句話總結:發布事情命令就行,完事自行通知

當一個異步過程調用發出后,調用者不能立刻得到結果。實際處理這個調用的部件在完成后,通過狀態、通知和回調來通知調用者。

例子

就是分時處理(如收發短信),服務器接收到客戶端請求后並不是立即處理,而是等待服務器比較空閑的時候加以處理,可以避免涌塞。  

異步如收發收短信,對比打電話,打電話我一定要在電話的旁邊聽着,保證雙方都在線,而收發短信,對方不用保證此刻我一定在手機旁,同時,我也不用時刻留意手機有沒有來短信。這樣的話,我看着視頻,然后來了短信,我就處理短信(也可以不處理),接着再看視頻。

其他解釋

同步和異步的區別

舉個例子:普通B/S模式(同步)AJAX技術(異步)

同步:提交請求->等待服務器處理->處理完畢返回 這個期間客戶端瀏覽器不能干任何事

異步: 請求通過事件觸發->服務器處理(這是瀏覽器仍然可以作其他事情)->處理完畢

總之:

同步在一定程度上可以看做是單線程,這個線程請求一個方法后就待這個方法給他回復,否則他不往下執行(死心眼)。 

異步在一定程度上可以看做是多線程的(廢話,一個線程怎么叫異步),請求一個方法后,就不管了,繼續執行其他的方法。 

如有高見,歡迎留言~

本文參考http://blog.csdn.net/tennysonsky/article/details/45111623


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM