VrShareMem - 跨平台共享内存模块

概述

VrShareMem 是一个跨平台的共享内存模块,支持 Windows 和 Linux 操作系统。提供了统一的接口来创建、管理和操作共享内存区域,支持进程间的数据共享和同步。

特性

  • 跨平台支持Windows/Linux
  • 统一的接口设计
  • 内置同步机制std::timed_mutex
  • 内存边界检查
  • 自动资源管理

使用示例

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