1. 程式人生 > >IO密集型和cpu密集型的多執行緒總結

IO密集型和cpu密集型的多執行緒總結

執行緒是否越多越好? 分析如下:

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

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

因此對於cpu密集型的任務來說,執行緒數等於cpu數是最好的了。

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

此時 執行緒數等於IO任務數是最佳的。