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