#pragma once #include #include "Interface/SharedMutex.h" #include class SharedMutex : public ISharedMutex { public: virtual ILock* readLock(); virtual ILock* writeLock(); private: std::shared_timed_mutex mutex; }; class ReadLock : public ILock { public: ReadLock(std::shared_lock* read_lock); private: std::auto_ptr > read_lock; }; class WriteLock : public ILock { public: WriteLock(std::unique_lock* write_lock); private: std::auto_ptr > write_lock; };