用内存映射在多个应用程序之间共享数据
文件的内存映射的主要用途有两个方面,第一是用来在多个进程之间共享数据,第二是直接用内存映射文件来访问磁盘上的数据文件,无需要进行文件的I/O操作。进程间共享数据有很多种方法,今天,我主要讲的是内存映射的这种方法。
在内存映射文件是在多个进程之间共享一个数据块的重要方法。通过调用API函数CreateFileMapping()可以像对待一个文件那样对待一个内存区。
内存映射文件的使用可以分为以下三步:
(1) 用CreateFileMapping()创建一个文件映射内核对象;
(2) 用MapViewOfFile()将文件数据映射到进程的地址空间;
(3) 用UnmapViewOfFile()从进程地址空间解除这个映射。
首先,我开始讲讲这几个API函数,摘自visualstudio 2010帮助文档。
CreateFileMapping
MapViewOfFile
UnmapViewOfFile
这里只是简单的贴出了地址,我讨厌整片的复制一堆过来充当自己的博客内容。
接下来是自己写的一个测试代码:
运行效果如下:
部分代码:
完整的工程这里提供下载地址(注:这个工程是在使用vs2010建的,如果使用低版本的vs出现错误,请使用vs2010编译。)
最后祝大家中秋节快乐!!!