# 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 库