8.程序什么时候应该使用线程,什么时候单线程效率高?
程序什么時(shí)候應(yīng)該使用線程?
??? 使用多線程編程可以給程序員帶來(lái)很大的靈活性,同時(shí)也使原來(lái)需要復(fù)雜技巧才能解決的問(wèn)題變得容易起來(lái)。不論什么時(shí)候只要能用單線程就不用多線程,只有在需要響應(yīng)時(shí)間要求比較高的情況下用多線程。某操作允許并發(fā)而且該操作有可能阻塞時(shí),用多線程。
線程很有用,但當(dāng)使用線程時(shí),可能會(huì)在解決老問(wèn)題的同時(shí)產(chǎn)生新問(wèn)題。例如要開發(fā)一個(gè)字處理程序,并想讓打印功能作為單獨(dú)的線程自己執(zhí)行。這聽起來(lái)是很好的主意,因?yàn)樵诖蛴r(shí),用戶可立即返回,開始編輯文檔。但這樣一來(lái),在該文檔被打印時(shí)文檔中的數(shù)據(jù)就有可能被修改,打印的結(jié)果就不再是所期望的內(nèi)容。也許最好不要把打印功能放在單獨(dú)的線程中,不過(guò)如果一定要用多線程的話,也可以考慮用下面的方法解決:
第一種方法是鎖定正在打印的文檔,讓用戶編輯其他的文檔,這樣在結(jié)束打印之前,該文檔不會(huì)作任何修改;
第二個(gè)方法可能更有效一些,即可以把該文檔拷貝到一個(gè)臨時(shí)文件中,打印這個(gè)臨時(shí)文件的內(nèi)容,同時(shí)允許用戶對(duì)原來(lái)的文檔進(jìn)行修改。當(dāng)包含文檔的臨時(shí)文件打印完成時(shí),再刪去這個(gè)臨時(shí)文件。
通過(guò)上面的分析可以看出,多線程在幫助解決問(wèn)題的同時(shí)也可能帶來(lái)新問(wèn)題。因此有必要弄清楚,什么時(shí)候需要?jiǎng)?chuàng)建多線程,什么時(shí)候不需要多線程。總的來(lái)說(shuō),多線程往往用于在前臺(tái)操作的同時(shí)還需要進(jìn)行后臺(tái)的計(jì)算或邏輯判斷的情況,而對(duì)于GUI(圖形用戶接口),除了開發(fā)MDI(多文檔界面)應(yīng)用程序外,應(yīng)盡量不使用多線程。
多線程
1、就如多了幾副碗筷,可以搶占更多的系統(tǒng)資源,加快可以分割成獨(dú)立執(zhí)行單元的程序段運(yùn)行
2、提供良好的操作感受:不在UI主線程執(zhí)行費(fèi)時(shí)的作業(yè)(這些作業(yè)以線程運(yùn)行)
3、響應(yīng)多個(gè)并行的請(qǐng)求
簡(jiǎn)單的順序執(zhí)行方式不能滿足要求的時(shí)候需要考慮多線程實(shí)現(xiàn),或者有些多任務(wù)管理時(shí)也需要用到多線程,否則無(wú)法并行執(zhí)行不同功能等等吧。
單線程好比所有工作都要你自己干,那樣你只能一樣一樣來(lái),多進(jìn)程好比你把這些工作分給若干人,大家同步進(jìn)行,同步進(jìn)行的好處是大家各干各的,除了接口外,其他工作都獨(dú)立完成,這樣不管是邏輯還是時(shí)間上都更加合理,就好象你們單位的若干部門協(xié)調(diào)工作一樣。如果所有部門的工作都要你們老總一個(gè)人干,那就是單線程了。
什么時(shí)候單線程效率高?
對(duì)于處理時(shí)間短的服務(wù)或者啟動(dòng)頻率高的要用單線程,相反用多線程!
總結(jié)
以上是生活随笔為你收集整理的8.程序什么时候应该使用线程,什么时候单线程效率高?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 7.wait和waitpid
- 下一篇: 9.惊群现象