✅什么是 IO 密集,什么是 CPU 密集?

典型回答

“I/O 密集型”和“CPU 密集型”是用来描述程序在资源利用上的侧重点的。

对于I/O 密集型任务,顾名思义,他的资源利用上对 I/O操作更多一些。对于CPU 密集型任务,那么他的资源利用上对 CPU 的依赖就更多一些。

I/O 密集型

I/O 操作主要包含从磁盘读取数据、写入数据、网络传输、数据库操作等。I/O 密集型任务的瓶颈在于数据的输入和输出过程,而不是计算过程。

他的特点如下:

  • 等待时间长:I/O 密集型任务通常涉及到大量的等待时间,等待磁盘、网络或其他外部设备的响应。
  • 计算量小:这些任务通常需要的计算量相对较少,大部分时间花费在等待 I/O 操作的完成上。
  • 适合多线程:由于 I/O 操作是非计算密集型的,多个线程可以在等待 I/O 操作完成的同时执行其他任务,从而提高整体效率。

常见的 I/O 密集型操作主要包括了文件的读写、网络请求、数据库查询等。


CPU 密集型

CPU 密集型任务涉及大量的计算操作,而不是 I/O 操作。这些任务的瓶颈在于计算能力和处理器的性能。

他的特点是

  • 计算量大:CPU 密集型任务需要进行大量的计算,例如复杂的数学运算、数据处理、图像处理等。
  • 等待时间少:这些任务通常不会有长时间的等待时间,主要消耗 CPU 的计算资源。
  • 适合多进程:可以利用多核处理器来并行计算,提升处理速度。

CPU 密集型,增加线程数没啥用了,因为CPU 已经很忙了,再有很多线程也忙不过来了,只能加 CPU 才有效果。

常见的CPU 密集型主要包括了图像处理、数据的计算、音视频编解码操作等会。

原文: https://www.yuque.com/hollis666/xkm7k3/ifr8v9er0fc4bsdi