1、程序什么時候應該使用線程,什么時候單線程效率高?(轉)


原文:https://blog.csdn.net/Fly_as_tadpole/article/details/82765308 

1.耗時的操作使用線程,提高應用程序響應。
2.並行操作時使用線程,如C/S架構的服務器端並發線程響應用戶的請求。 
3.多CPU系統中,使用線程提高CPU利用率 
4.改善程序結構。一個既長又復雜的進程可以考慮分為多個線程,成為幾個獨立或半獨立的運行部分,這樣的程序會利於理解和修改。

進程與線程的選擇取決以下幾點:

1、需要頻繁創建銷毀的優先使用線程;因為對進程來說創建和銷毀一個進程代價是很大的。

2、線程的切換速度快,所以在需要大量計算,切換頻繁時用線程,還有耗時的操作使用線程可提高應用程序的響應

3、因為對CPU系統的效率使用上線程更占優,所以可能要發展到多機分布的用進程,多核分布用線程;

4、並行操作時使用線程,如C/S架構的服務器端並發線程響應用戶的請求;

5、需要更穩定安全時,適合選擇進程;需要速度時,選擇線程更好。

不論什么時候只要能用單線程就不用多線程,只有在需要響應時間要求比較高的情況下用多線程。某操作允許並發而且該操作有可能阻塞時,用多線程。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

線程很有用,但當使用線程時,可能會在解決老問題的同時產生新問題。例如要開發一個字處理程序,並想讓打印功能作為單獨的線程自己執行。這聽起來是很好的主意,因為在打印時,用戶可立即返回,開始編輯文檔。但這樣一來,在該文檔被打印時文檔中的數據就有可能被修改,打印的結果就不再是所期望的內容。也許最好不要把打印功能放在單獨的線程中,不過如果一定要用多線程的話,也可以考慮用下面的方法解決:

第一種方法是鎖定正在打印的文檔,讓用戶編輯其他的文檔,這樣在結束打印之前,該文檔不會作任何修改;

第二個方法可能更有效一些,即可以把該文檔拷貝到一個臨時文件中,打印這個臨時文件的內容,同時允許用戶對原來的文檔進行修改。當包含文檔的臨時文件打印完成時,再刪去這個臨時文件。

通過上面的分析可以看出,多線程在幫助解決問題的同時也可能帶來新問題。因此有必要弄清楚,什么時候需要創建多線程,什么時候不需要多線程。總的來說,多線程往往用於在前台操作的同時還需要進行后台的計算或邏輯判斷的情況,而對於GUI(圖形用戶接口),除了開發MDI(多文檔界面)應用程序外,應盡量不使用多線程。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
多線程
1、就如多了幾副碗筷,可以搶占更多的系統資源,加快可以分割成獨立執行單元的程序段運行
2、提供良好的操作感受:不在UI主線程執行費時的作業(這些作業以線程運行)
3、響應多個並行的請求

----------------------------------------------------------------------------------------------------------------------------

簡單的順序執行方式不能滿足要求的時候需要考慮多線程實現,或者有些多任務管理時也需要用到多線程,否則無法並行執行不同功能等等吧。

單線程好比所有工作都要你自己干,那樣你只能一樣一樣來,多進程好比你把這些工作分給若干人,大家同步進行,同步進行的好處是大家各干各的,除了接口外,其他工作都獨立完成,這樣不管是邏輯還是時間上都更加合理,就好象你們單位的若干部門協調工作一樣。如果所有部門的工作都要你們老總一個人干,那就是單線程了。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

什么時候單線程效率高?

對於處理時間短的服務或者啟動頻率高的要用單線程,相反用多線程!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM