http://ifeve.com/how-to-calculate-threadpool-size/.net
任務通常可分爲:CPU密集型、IO密集型、混合型,對於不一樣類型的任務須要分配不一樣大小的線程池。線程
- CPU密集型任務
儘可能使用較小的線程池,通常爲CPU核心數+1。
由於CPU密集型任務使得CPU使用率很高,若開過多的線程數,只能增長上下文切換的次數,所以會帶來額外的開銷。
- IO密集型任務
能夠使用稍大的線程池,通常爲2*CPU核心數。
IO密集型任務CPU使用率並不高,所以能夠讓CPU在等待IO的時候去處理別的任務,充分利用CPU時間。
- 混合型任務
能夠將任務分紅IO密集型和CPU密集型任務,而後分別用不一樣的線程池去處理。
只要分完以後兩個任務的執行時間相差不大,那麼就會比串行執行來的高效。
由於若是劃分以後兩個任務執行時間相差甚遠,那麼先執行完的任務就要等後執行完的任務,最終的時間仍然取決於後執行完的任務,並且還要加上任務拆分與合併的開銷,得不償失。
獲取CPU數量