關鍵字: 同步 異步
同步在一定程度上可以看做是單線程,這個線程請求一個方法后就待這個方法給他回復,否則他不往下執行(死心眼)。
異步在一定程度上可以看做是多線程的(廢話,一個線程怎么叫異步),請求一個方法后,就不管了,繼續執行其他的方法。
比如一個文章系統里面,文章內容通常是字數非常多的,如果數據量大,打開會非常的慢,這個時候可以采取兩種方法:
1、死心眼:一直等待要顯示的數據全部取出來
標題、作者、來源、創建時間、關鍵字、點擊次數、文章正文
ok,全部取出
顯示
碰上心急的用戶,他會罵死你的。
2、異步:首先顯示能夠快速取出的部分:
標題、作者、來源、創建時間、關鍵字、點擊數
顯示
然后另外的一個線程等待取出文章的正文顯示!
異步就是:做一件事情的同事,不影響做其他的事情。
-----------------------------------------
轉帖一些文字:
所謂同步,可以理解為在執行完一個函數或方法之后,一直等待系統返回值或消息,這時程序是出于阻塞的,只有接收到返回的值或消息后才往下執行其他的命令。
異步,執行完函數或方法后,不必阻塞性地等待返回值或消息,只需要向系統委托一個異步過程,那么當系統接收到返回值或消息時,系統會自動觸發委托的異步過程,從而完成一個完整的流程。
并不是說誰好誰不好,只是同步的機制不適合在正式應用的項目當中(但自己測試還是可以的)
同步,就是實時處理,比如服務器一接收客戶端請求,馬上響應,這樣客戶端可以在最短的時間內得到結果,但是如果多個客戶端,或者一個客戶端發出的請求很頻繁,服務器無法同步處理,就會造成涌塞。
異步,就是分時處理,服務器接收到客戶端請求后并不是立即處理,而是等待服務器比較空閑的時候加以處理,可以避免涌塞。
同步和異步之分:
同步就是調用一個函數,直接函數執行完了才返回到調用函數
異步就是被調用函數初始化完后馬上返回。
----------
同步就是(我死心眼)我等你(給我回答),異步就是(我很忙)我不等你(給我回答)
嚴格的說,異步還是有兩種
一種是等,但是等的過程和同步不一樣,等的時候可以做別的工作,但是程序的主線還是等待 WaitforSingleObject(hEvent,INFINTE,TRUE);
另外一種是CALLBACK方式,這種異步是完全不等待,程序主線發出請求之后就干別的事情去了,完全不理會請求執行的如何。
所有異步必然設計兩個以上的線程(不然不存在異步的問題),第一種方式下,請求的后期工作是在發出請求的線程上執行,第二種方式下,后期工作可以在任何線程(通常是執行請求的線程上)完成。
posted on 2010-06-17 14:40
zoyi 閱讀(708)
評論(0) 編輯 收藏 引用 所屬分類:
技術雜文