阻塞IO

阻塞IO教程

最常用的 I/O 模型就是阻塞 I/O 模型,缺省的情况下,所有的文件操作都是阻塞的。我们可以简单的理解为一请求一响应,在没有响应的情况下,该请求端不会做任何其他的事情,一直在等待响应。

阻塞I/O描述

阻塞 I/O 的模型示意图如下:

03 block IO.png

我们可以看到,整个流程是一个串行的过程,从应用程序发起数据请求的时候,就会一直等待数据返回。应用程序在等待的过程中,不能做其他的事情。所以该流程被称为阻塞 I/O 流程。

阻塞I/O优缺点

优点

  • 进程阻塞挂起的时候,不会消耗 CPU 资源,可以及时的响应每个操作。
  • 实现难度比较低,开发接手实现比较容易。
  • 适合并发量比较小的网络应用开发。

缺点

  • 不适合并发量比较大的应用,因为每次请求都会阻塞进程。
  • 需要为每个 I/O 请求分配单独的进程或者线程,系统开销比较大。

阻塞I/O总结

阻塞 I/O 在 I/O 模型里面是最简单的 I/O 模型。它是发起请求然后等待结果返回的场景。在结果没有返回的时候,会一直等待,不做其它任何事情。这样系统的使用率就比较低,比较浪费系统资源。