GrabBag/Module/ShareMem/README.md

77 lines
1.9 KiB
Markdown
Raw Normal View History

# VrShareMem - 跨平台共享内存模块
## 概述
VrShareMem 是一个跨平台的共享内存模块,支持 Windows 和 Linux 操作系统。提供了统一的接口来创建、管理和操作共享内存区域,支持进程间的数据共享和同步。
## 特性
- 跨平台支持Windows/Linux
- 统一的接口设计
- 内置同步机制std::timed_mutex
- 内存边界检查
- 自动资源管理
## 使用示例
```cpp
#include "IVrShareMem.h"
#include "VrError.h"
int main() {
// 创建共享内存实例
IVrShareMem* sharedMem = CreateShareMemInstance();
// 创建共享内存区域
int ret = sharedMem->CreateOrOpen("test_memory", 1024, true);
if (ret != SUCCESS) {
// 错误处理
DestroyShareMemInstance(sharedMem);
return -1;
}
// 映射内存
void* ptr = sharedMem->MapView();
if (ptr == nullptr) {
// 错误处理
sharedMem->Close();
DestroyShareMemInstance(sharedMem);
return -1;
}
// 写入数据
const char* data = "Hello, Shared Memory!";
sharedMem->WriteData(0, data, strlen(data) + 1);
// 读取数据
char buffer[256];
int readBytes = sharedMem->ReadData(0, buffer, sizeof(buffer));
// 使用锁进行同步
if (sharedMem->Lock(1000) == SUCCESS) { // 1秒超时
// 临界区操作
sharedMem->Unlock();
}
// 清理资源
sharedMem->Close();
DestroyShareMemInstance(sharedMem);
return 0;
}
```
## 注意事项
1. 共享内存名称在同一系统中必须唯一
2. 创建者进程负责删除共享内存资源
3. **重要**: 锁机制使用 `std::timed_mutex`,仅适用于同一进程内的线程同步,不支持跨进程同步
4. 确保在程序退出前调用 `Close()` 方法
5. Linux 下需要链接 `rt`
## 依赖
- C++11 或更高版本
- Windows: kernel32.dll, user32.dll
- Linux: rt 库