爲什麼要使用多線程,多進程?

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

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


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

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

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

 

什麼情況下使用多線程?

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章