这篇文章上次修改于 765 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

根据应用程序是否阻塞自身运行,可以把 I/O 分为阻塞 I/O 和非阻塞 I/O。

  • 所谓阻塞 I/O,是指应用程序在执行 I/O 操作后,如果没有获得响应,就会阻塞当前线程,不能执行其他任务。
  • 所谓非阻塞 I/O,是指程序在执行 I/O 操作后,不会阻塞当前的线程,可以继续执行其他的任务。

根据 I/O 响应的方式不同,可以把文件 I/O 分为同步 I/O 和异步 I/O。

  • 所谓同步 I/O,是指收到 I/O 请求后,系统不会立即响应应用程序;等待处理万能充,系统才会通过系统调用的方式,告诉应用程序 I/O 结果。
  • 所谓异步 I/O,是指收到 I/O 请求后,系统会先告诉应用程序 I/O 请求已经收到,然后在异步处理;等处理完成后,系统在通过时间通知的方式,告诉应用程序结果。