架构深渊

慢慢走进程序的深渊……关注领域驱动设计、测试驱动开发、设计模式、企业应用架构模式……积累技术细节,以设计架构为宗。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

进程内存共享的方法

Posted on 2008-09-12 16:57  chen eric  阅读(483)  评论(0编辑  收藏  举报
内存映射文件是32位windows程序中多进程同时共享一个数据块的唯一方法,CreateFileMapping  
  可以让程序对待一个文件一样对待一块内存区域,以后就可以把该内存看作用malloc得到的指针  
  来用。下面是一个例子,其中一个程序负责向共享文件写数据,另一个程序则创建一个线程,监视该内存文件的内容是否发生改变。若改变则通知程序显示:  
  1.写数据的程序  
  首先调用CreateFileMapping函数  
    m_hMap=::CreateFileMapping((HANDLE)-1,NULL,PAGE_READWRITE,0,大小,  
                          _T("share_memory"));  
  在内存文件创建后获得该文件的指针:  
    m_pMap=::MapViewOfFile(m_hMap,FILE_MAP_WRITE,0,0,0);  
  然后程序可以调用m_pMap向文件中写数据了,当程序终止时要关闭映射文件  
    CloseHandle(m_pMap);  
  2.读数据的程序  
  首先打开文件  
    m_pMap=::OpenFileMapping(FILE_MAP_READ,FALSE,_T("share_memory"));  
  打开后,获取文件   的指针  
    m_pMap=::MapViewOfFile(m_hMap,FILE_MAP_WRITE,0,0,0);  
  然后程序就可以从m_pMap   中读数据了,最后不要忘了关闭文件