#pragma once #include #include #include #include template class DataBuffer { public: void SetData(const T &newData) { std::unique_lock lock(mutex); data = std::make_shared(newData); } std::shared_ptr GetData() { std::shared_lock lock(mutex); return data ? data : nullptr; } void Clear() { std::unique_lock lock(mutex); data = nullptr; } private: std::shared_ptr data; std::shared_mutex mutex; };