#ifndef MUTEXSAFE_H
#define MUTEXSAFE_H
#include <string>
#include <mutex>
template <typename T>
class MutexSafe
{
public:
MutexSafe(T* resource): m_resource(resource) {}
~MutexSafe() { delete m_resource; }
void lock() { m_mutex.lock(); }
void unlock() { m_mutex.unlock(); }
bool try_lock() { return m_mutex.try_lock(); }
std::mutex& Mutex() { return m_mutex; }
T& Acquire(std::unique_lock<std::mutex>& lock)
{
lock = std::unique_lock<std::mutex>(m_mutex);
return *m_resource;
}
private:
std::mutex m_mutex;
T* m_resource;
};
typedef MutexSafe<std::string> SafeString;
#endif
#inc