关于网友提出的“ delphi多进程同步访问共享内存”问题疑问,本网通过在网上对“ delphi多进程同步访问共享内存”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: delphi多进程同步访问共享内存
描述: 在A进程内创建一个文件映射对像HMapping := CreateFileMapping(),在B进程中用OpenFileMapping来访问映射文件,如何用mutex来同步各个进程对共享内存的访问呢?谢谢,最好有个简单的实例。。
解决方案1: 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;
//这个跟限制程序多开的原理是一样的,上面的互斥体名称是必须的,另外你还可以用事件,信号量,原理都一样
解决方案2: 1、先用线程读写某个文件做一个框架出来。
2、然后把读写变成ShareMemory
3、变成多进程。
这样的做法比较可取。
再加上,进程间共享内存,本来就是一个有难度的话题,
lz 可以多花点时间研究下。
鉴于网上资料确实很少,有用的真的不多。
如果愿意,研究出来后,让我们这些有兴趣的人,也学习一下。
在这,先谢了。
解决方案3: 简单的一个写进程,一个读进程,写完后发个消息给读的进程
这是比较简单的
http://msdn.microsoft.com/en-us/library/aa366551(v=VS.85).aspx
微软的例子写的很详细
以上介绍了“ delphi多进程同步访问共享内存”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3662683.html