為什么要使用多線程,多進程?


舉個栗子:我要快速裝滿一桶水,如果一個人向桶中加水需要耗時很久,如果多個人加水呢?結果速度變快了、效率提高了。
很顯然一個人干活不能滿足我們的設計需要,使用多個就提升了速度並實現了並發不等待。

使用多線程和多進程也是同理,就是為了提高程序執行效率,實現並發/並行。


什么情況下使用多進程?
大家都知道CPU的計算速度非常快,一個CPU同一時刻只能處理一個進程,如果程序中都是計算密集型任務,這類任務的特點是CPU消耗很大,

那使用多進程可以充分的利用CPU資源,明顯地提升程序執行效率。但是開啟的進程越多,CPU花在任務切換的時間就越多,CPU的效率就越低,

所以,要最高效地利用CPU,計算密集型任務同時進行的數量應當等於CPU的核心數。

 

什么情況下使用多線程?

如果程序中都是IO密集型任務,涉及到網絡、磁盤IO的任務都是IO密集型任務,這類任務的特點是CPU消耗很少,

任務的大部分時間都在等待IO操作完成(因為IO的速度遠遠低於CPU和內存的速度)。

對於IO密集型任務,任務越多,CPU效率越高,但也有一個限度(一般為CPU數的2倍)。

如果我們的程序沒有很多的線程,我們也就沒必要采購性能高的服務器,可以節約成本。


免責聲明!

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



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