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