当前位置:嗨网首页>书籍在线阅读

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操作,避免了和其他进程交叉操作的风险。