从多个进程并发访问共享内存DLL
Concurrent access to shared-mem DLL from multiple processes
我有一个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
相关文章:
- 使用Boost Interprocess创建托管共享内存需要很长时间
- 访问共享内存而不使用易失性、std::atomic、信号量、互斥锁和自旋锁
- 越界访问 CUDA 共享内存
- 访问共享内存时出现读取访问冲突
- 使用 IPC 共享内存的应用程序是否可以访问彼此的代码?
- 在不违反严格的别名规则的情况下访问进程间共享内存中的对象
- 共享内存多线程和数据访问
- 如何确保一次只有一个进程访问共享内存
- 共享内存初始化和访问
- Linux 共享内存只允许读取访问
- 如何创建可由多个进程访问的共享内存段
- 尝试使用pthreads访问共享数据数组时,出现“无法访问内存地址”错误
- 对共享内存的原子访问
- 访问共享内存中的数据c++ POSIX
- 如何在Windows 7上运行的.net应用程序中访问共享内存
- 共享内存,如何从另一个CPP文件访问
- 从多个进程并发访问共享内存DLL
- 通过结构和重载操作符包装CUDA共享内存定义和访问
- 共享内存访问导致rss增加
- 访问CUDA中的共享内存