天天看點

多線程下IO密集型和cpu密集型對比總結CPU密集型IO密集型

線程是否越多越好? 分析如下:

CPU密集型

一個計算為主的程式(專業一點稱為CPU密集型程式)。多線程跑的時候,可以充分利用起所有的cpu核心,比如說4個核心的cpu,開4個線程的時候,可以同時跑4個線程的運算任務,此時是最大效率。

但是如果線程遠遠超出cpu核心數量 反而會使得任務效率下降,因為頻繁的切換線程也是要消耗時間的。

是以對于cpu密集型的任務來說,線程數等于cpu數是最好的了。

IO密集型

如果是一個磁盤或網絡為主的程式(IO密集型)。一個線程處在IO等待的時候,另一個線程還可以在CPU裡面跑,有時候CPU閑着沒事幹,所有的線程都在等着IO,這時候他們就是同時的了,而單線程的話此時還是在一個一個等待的。我們都知道IO的速度比起CPU來是慢到令人發指的。是以開多線程,比方說多線程網絡傳輸,多線程往不同的目錄寫檔案,等等。

此時 線程數等于IO任務數是最佳的。