四种IO模型

99 阅读1分钟
缓存IO(默认使用)

比如读取文件时,先将文件读取到文件系统的页缓存(内存中的一块),全部完成后,再把它复制到具体的应用程序的内存中。(比较耗性能,需要复制两次)

阻塞IO

当一次IO开启时,程序阻塞(交出cpu)的等待数据传到内核,再传到应用程序。

非阻塞IO

一次IO开启后,不断轮询检查IO是否完成(此阶段其它程序可以正常执行),如果完成了阻塞读取数据。因此非阻塞io不会交出cpu,而是一直轮询,性能差。

IO多路复用

属于同步阻塞,统一由一个线程处理管理IO,避免大量的线程管理IO连接,减少了系统的开销。有epoll select poll三种,epoll效率最高。和非阻塞io的区别,非阻塞io如果有多个io,就会有多个轮询检查查,io多路复用将他们统一交给了一个线程。select会检查所有IO连接,如果有IO准备好了,则通知对应线程,阻塞读取。