- 过小导致程序不能充分利用系统资源,发生饥饿
- 过大会导致更多的线程上下文切换,占用更多的内存
CPU 密集型计算
通常采用 cpu
核数 +1
能够实现最优 CPU
利用率。
+1
是保证当前线程由于页缺失故障(操作系统)或其他原因导致暂停时,额外的这个线程就能顶上去,保证 CPU
时钟周期不被浪费。
I/O 密集型运算
CPU
不总是处于繁忙状态。
公示如下
线程数 = 核数 * 期望 CPU 利用率 * 总时间(CPU 计算时间 + 等待时间)/ CPU 计算时间
例如,4
核 CPU
计算时间为 50%
,其他等待时间为 50%
,期望 CPU
为 100%
利用率
4 * 100% * 100% / 50% = 8