02-分散聚集IO
4.1 分散/聚集I/O
分散/聚集I/O是一种可以在单次系统调用中对多个缓冲区输入输出的方法,可以把多个缓冲区的数据写到单个数据流,也可以把单个数据流读到多个缓冲区中。其命名的原因在于数据会被分散到指定缓冲区向量,或者从指定缓冲区向量中聚集数据。这种输入输出方法也称为向量I/O(vector I/O)。与之不同,第2章提到的标准读写系统调用可以称为线性I/O(linear I/O)。
与线性I/O相比,分散/聚集 I/O有如下几个优势:
编码模式更自然
如果数据本身是分段的(比如预定义的结构体的变量),向量I/O提供了直观的数据处理方式。
效率更高
单个向量I/O操作可以取代多个线性I/O操作。
性能更好
除了减少了发起的系统调用次数,通过内部优化,向量I/O可以比线性I/O提供更好的性能。
支持原子性
和多个线性I/O操作不同,一个进程可以执行单个向量I/O操作,避免了和其他进程交叉操作的风险。