现在的位置: 首页 > 综合 > 正文

进程内存共享的方法

2012年12月18日 ⁄ 综合 ⁄ 共 631字 ⁄ 字号 评论关闭
内存映射文件是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   中读数据了,最后不要忘了关闭文件

抱歉!评论已关闭.