1. 程式人生 > 其它 >如何合理配置執行緒池

如何合理配置執行緒池

如何合理配置執行緒池

1.1 CPU密集型

CPU密集的意思是該任務需要大量的運算,而沒有阻塞,CPU一直全速執行。CPU密集任務只有真正的多核CPU才可能得到加速(通過多執行緒),而在單核CPU上無論開幾個執行緒該任務都不可能得到加速。CPU密集型任務配置儘可能少的執行緒數量,CPU密集型分配公式:CPU核數 + 1 個執行緒的執行緒池。

1.2 IO密集型

IO密集型任務並不是一直在執行任務,則應配置儘可能多的執行緒。

IO密集型,即該任務需要大量的IO,即大量的阻塞。在單執行緒上執行IO密集型的任務會導致浪費大量的CPU運算能力在等待。所以在IO密集型任務中使用多執行緒可以大大加速程式執行,即使在單核CPU上,這種加速主要就是利用了被浪費的阻塞時間。

IO密集型時,大部分執行緒阻塞,故需要多配置執行緒。執行緒分配參考公式:CPU核數/1-阻塞係數(阻塞係數在0.8~0.9之間)。

以8核CPU為例:8/1-0.9=80個執行緒數。