Boost:内存映射文件
内存映射文件,是将一个文件全部或部分映射到进程的内存地址空间中,完成映射后,进程可以直接通过映射后的内存地址的读写完成对硬盘上文件的读写。
内存映射文件的好处在与,通过普通的read/write系统调用,需要先通过文件系统和驱动程序将硬盘的数据拷贝到内核空间中,然后再将内核空间的数据拷贝到用户空间。而内存映射文件在完成映射后,当进程访问对应的内存地址后,会出发缺页中断,然后缺页中断会通过mmap将硬盘的文件内从直接映射到内存地址上,也就是通过内存映射文件可以节省一次内存数据的拷贝。对于需要频繁进行读写操作的文件,通过内存映射文件可以大大的提供读写效率。
1.创建内存映射文件对象
#include <boost/interprocess/file_mapping.hpp>
file_mapping mFile("./mfile",read_write);
2.将文件映射到内存
mapped_region mRegion
( mFile //Memory-mappable object
, read_write //Access mode
, offset //Offset from the beginning of shm
, length //length of the map region
);注:映射时可以指定从文件的某个偏移地址开始映射,同时也可以指定映射区域的大小。如果未指定偏移量或大小,则整个文件被映射。如果仅指定了偏移量而没有指定大小,则映射区域覆盖了从偏移量到文件