用多線程又有幾種常用的編程模型

字號:

這里可以大概給你介紹一下,但對于每一種編程模型要看具體的示例是什么,而且我不可能給你羅列所有的代碼,請諒解。
    其實我們編程只要盡量站到比較高的層次,很多道理其實你會發(fā)現(xiàn)你已經(jīng)懂了。
    就多線程來說,我們開始設(shè)想只有兩個線程(>2時是不是算數(shù)學(xué)歸納法?)那么如果兩個獨立的線程會發(fā)生什么呢?
    1.當一個線程進入moniter(也就是說站用一個object),另一個線程只有等待或返回,而我們把返回就稱為一種模式,這種模式的英文是Balking. 2.這兩個線程可以是有序的執(zhí)行,而不是讓OS來調(diào)度,這時我們要用一個object來調(diào)度,這種模式稱為Scheduler.(這個詞及其含義其實OS中就有)。
    3.如果這兩個線程同時讀一個資源,我們可以讓他們執(zhí)行,但如果同時寫的話,你閉著眼睛都會知道可能出現(xiàn)問題,這時我們就要用另一種模式(Read/Write Lock)。
    4.如果一個線程是為另一個線程服務(wù)的話,比如IE中負責數(shù)據(jù)傳輸?shù)木€程和界面顯示的線程,當一個圖片沒有傳完時,另一個線程就無法顯示,至少是部分沒有傳完。那么這時我們要用一個模式稱為生產(chǎn)者和消費者,英文是Producer-Consumer. 5.兩個線程的消亡也可以不是完全又OS來控制的,這時我們需要給出一個條件,使得每個線程在符合條件是才消亡,也就是有序的消亡,我們稱為Two-Phase Termination.那么有這5個線程模型,基本上可以用到大多數(shù)編程任務(wù)中。我需要指出的三點是:1.從高層次上我們可以再驗證是否含蓋了所有的情況。