77 lines
1.9 KiB
Markdown
77 lines
1.9 KiB
Markdown
# 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 库 |