从多个进程并发访问共享内存DLL

Concurrent access to shared-mem DLL from multiple processes

本文关键字:访问共享 内存 DLL 并发 进程      更新时间:2023-10-16

我有一个DLL,它使用内存映射文件在Windows (c++)中的多个进程之间提供数据共享。想要相互读/写数据的进程在DLL中注册它们的窗口句柄。当其中一个将数据放入共享中时,其他的就会收到通知。任何进程都可以通过DLL读取或写入数据。

我希望能够防止进程写入共享内存,直到通知完成,防止多个进程在同一时间写入,等等。感觉就像我需要一个"全局互斥",但有这样的事情吗?

谢谢。

使用"virtuallock" WinAPI函数

输入是映射的内存指针和映射的内存大小。

BOOL WINAPI VirtualLock(
  _In_ LPVOID lpAddress,
  _In_ SIZE_T dwSize
);

你有VirtualUnlock解锁内存,只要你想(基于您的业务需求)

要了解更多信息,请参考winAPI文档

https://msdn.microsoft.com/en-us/library/windows/desktop/aa366895 (v = vs.85) . aspx