在A进程内创建一个文件映射对像HMapping := CreateFileMapping(),在B进程中用OpenFileMapping来访问映射文件,如何用mutex来同步各个进程对共享内存的访问呢?谢谢,最好有个简单的实例。。

解决方案 »

  1.   

    这个需要使sendmessge来同步传递消息的
      

  2.   

    var
      hMutex: HWND;
    begin
      hMutex := CreateEvent(nil,False,False,'互斥体名称');
      if GetLastError = ERROR_ALREADY_EXISTS then
      begin
        MessageBox(0,'不能访问内在共享!','Error!',0);
        Exit;
      end;
      try
      ...处理内存共享
      finally
        ReleaseMetux(hMutex);//或者用CloseHandle(hMutex)
      end;
    end;//这个跟限制程序多开的原理是一样的,上面的互斥体名称是必须的,另外你还可以用事件,信号量,原理都一样
      

  3.   

    简单的一个写进程,一个读进程,写完后发个消息给读的进程
    这是比较简单的
    http://msdn.microsoft.com/en-us/library/aa366551(v=VS.85).aspx
    微软的例子写的很详细
      

  4.   

    1、先用线程读写某个文件做一个框架出来。
    2、然后把读写变成ShareMemory
    3、变成多进程。这样的做法比较可取。再加上,进程间共享内存,本来就是一个有难度的话题,
    lz 可以多花点时间研究下。
    鉴于网上资料确实很少,有用的真的不多。
    如果愿意,研究出来后,让我们这些有兴趣的人,也学习一下。
    在这,先谢了。