用内存映射在多个应用程序之间共享数据

文件的内存映射的主要用途有两个方面,第一是用来在多个进程之间共享数据,第二是直接用内存映射文件来访问磁盘上的数据文件,无需要进行文件的I/O操作。进程间共享数据有很多种方法,今天,我主要讲的是内存映射的这种方法。

         在内存映射文件是在多个进程之间共享一个数据块的重要方法。通过调用API函数CreateFileMapping()可以像对待一个文件那样对待一个内存区。

         内存映射文件的使用可以分为以下三步:

(1)      用CreateFileMapping()创建一个文件映射内核对象;

(2)      用MapViewOfFile()将文件数据映射到进程的地址空间;

(3)      用UnmapViewOfFile()从进程地址空间解除这个映射。

首先,我开始讲讲这几个API函数,摘自visualstudio 2010帮助文档。

CreateFileMapping

MapViewOfFile

UnmapViewOfFile

这里只是简单的贴出了地址,我讨厌整片的复制一堆过来充当自己的博客内容。
接下来是自己写的一个测试代码:
运行效果如下:


部分代码:


就如前面所说的,按照三步来完成。其实,如果你按照这三步骤来完成,理解其中的意思,还是很简单的。


完整的工程这里提供下载地址(注:这个工程是在使用vs2010建的,如果使用低版本的vs出现错误,请使用vs2010编译。

单击这里下载

最后祝大家中秋节快乐!!!

posted @ 2011-09-12 21:44  Java EE  阅读(358)  评论(0编辑  收藏  举报