当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
进程间共享内存
发布时间:2010/8/8 12:37:23 来源:城市学习网 编辑:ziteng
  修改一:将原来的CSFMServer和CSFMClient合并为一个类:XShareMemory
  使用的方法是一样的,对于服务端:
  Create("c:\\data.tmp", "MyShareData", 100);
  对于客户端
  Open(FILE_MAP_READ, "MyShareData");
  然后就可以进行读写。
  具体请看例子:
  void CShareMemTestDlg::OnWrite()
  {
  UpdateData();
  if(!m_ShareMemServer.IsCreated())
  m_ShareMemServer.Create("c:\\data.tmp", "MyShareData", 100);
  m_ShareMemServer.Write((const char *)(LPCTSTR)m_strData, m_strData.GetLength() + 1);
  }
  CString CShareMemTestDlg::ReadData()
  {
  char pData[100];
  memset(pData, 0, 100);
  if(!m_ShareMemClient.IsOpened())
  m_ShareMemClient.Open(FILE_MAP_READ, "MyShareData");
  CString strData = "";
  if(m_ShareMemClient.Read(pData, 100))
  strData = pData;
  return strData;
  }
  修改二:添加了共享内存的同步保护
  共享数据可能在多个线程或多个进程中读写,需要进行同步保护。
  我采用互斥量来保护:
  hMutex = CreateMutex(NULL, FALSE, szMutexName);
  ......
  WaitForSingleObject(hMutex, INFINITE);
  memcpy(pData, p, dwSize);
  ReleaseMutex(hMutex);
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved