聊具体场景
CPU 密集型程序
I/O 密集型程序
所以,如果是多核CPU 处理 CPU 密集型程序,我们完全可以最大化的利用 CPU 核心数,应用并发编程来提高效率
线程等待时间所占比例越高,需要越多线程;线程CPU时间所占比例越高,需要越少线程。
对于 CPU 密集型来说,理论上 线程数量 = CPU 核数(逻辑)就可以了,但是实际上,数量一般会设置为 CPU 核数(逻辑)+ 1, 为什么呢?
计算(CPU)密集型的线程恰好在某时因为发生一个页错误或者因其他原因而暂停,刚好有一个“额外”的线程,可以确保在这种情况下CPU周期不会中断工作。
对于 I/O 密集型程序
最佳线程数 = (1/CPU利用率) = 1 + (I/O耗时/CPU耗时)
如果多个核心,那么 I/O 密集型程序的最佳线程数就是
最佳线程数 = CPU核心数 * (1/CPU利用率) = CPU核心数 * (1 + (I/O耗时/CPU耗时))