IO密集型线程和CPU密集型线程

CPU密集型

CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作CPU读写IO(硬盘/内存)时,IO可以在很短的时间内完成,而CPU还有许多运算要处理,因此,CPU负载很高。

CPU密集表示该任务需要大量的运算,而没有阻塞,CPU一直全速运行。CPU密集任务只有在真正的多核CPU上才可能得到加速,而在单核CPU上,无论你开几个模拟的多线程该任务都不可能得到加速,因为CPU总的运算能力就只有这么多。通常,CPU密集型线程的数目只需要设置为CPU核心数的线程个数就可以了

IO密集型

IO密集型指的是系统的CPU性能相对硬盘、内存要好很多,此时,系统运作,大部分的状况是CPU在等IO (硬盘/内存) 的读写操作,因此,CPU负载并不高。

密集型的程序一般在达到性能极限时,CPU占用率仍然较低,导致线程空余时间很多,因此IO密集型线程通常为CPU核心数的数倍,其计算公式为:IO密集型核心线程数 = CPU核数 / (1-阻塞系数)。使得线程进行 I/O 操作 CPU 空闲时,启用其他线程继续使用 CPU,以提高 CPU 的使用率。

CPU密集型与IO密集型任务的使用说明

  • 当线程等待时间所占比例越高,则需要更多的线程,启用其他线程继续使用CPU,以此提高CPU的利用率。
  • 当线程CPU时间所占比例越高,则需要更少的线程,通常线程数和CPU核数一致即可。

猜你喜欢

转载自blog.csdn.net/TABE_/article/details/126734833