Thread - lichuncen/lichuncen.github.io GitHub Wiki
对于 CPU 密集型来说,理论上 线程数量 = CPU 核数(逻辑)
就可以了,但是实际上,数量一般会设置为 CPU 核数(逻辑)+ 1
。计算(CPU)密集型的线程恰好在某时因为发生一个页错误或者因其他原因而暂停,刚好有一个“额外”的线程,可以确保在这种情况下CPU周期不会中断工作。
对于 I/O 密集型程序,最佳线程数 = (1/CPU利用率)
= 1 + (I/O耗时/CPU耗时)
这是一个CPU核心的最佳线程数,如果多个核心,那么 I/O 密集型程序的最佳线程数就是:最佳线程数 = CPU核心数
* (1/CPU利用率)
= CPU核心数
* (1 + (I/O耗时/CPU耗时))
串行率限制并行性能 Tips: 临界区都是串行的,非临界区都是并行的,用单线程执行临界区的时间/用单线程执行(临界区+非临界区)的时间就是串行百分比