#ifndef VRSHAREMEM_H #define VRSHAREMEM_H #include "IVrShareMem.h" #include #include #include #ifdef _WIN32 #include #else #include #include #include #include #endif /** * @brief 共享内存实现类 * 提供 Windows 和 Linux 平台的共享内存操作实现 */ class VrShareMem : public IVrShareMem { public: VrShareMem(); virtual ~VrShareMem(); // 实现 IVrShareMem 接口 virtual int CreateOrOpen(const std::string& name, size_t size, bool create = true) override; virtual void* MapView() override; virtual int UnmapView() override; virtual int Close() override; virtual size_t GetSize() const override; virtual void* GetMappedAddress() const override; virtual bool IsValid() const override; virtual int WriteData(size_t offset, const void* data, size_t size) override; virtual int ReadData(size_t offset, void* buffer, size_t size) override; virtual int Lock(int timeout = -1) override; virtual int Unlock() override; private: std::string m_name; // 共享内存名称 size_t m_size; // 内存大小 void* m_mappedAddress; // 映射地址 bool m_created; // 是否创建者 #ifdef _WIN32 HANDLE m_hMapFile; // Windows 文件映射句柄 #else int m_fd; // Linux 文件描述符 #endif std::timed_mutex m_mutex; // 互斥锁 // 私有辅助方法 std::string GetPlatformName(const std::string& name) const; bool CheckBounds(size_t offset, size_t size) const; }; #endif // VRSHAREMEM_H