This repository has been archived on 2025-03-22. You can view files and clone it, but cannot push or open issues or pull requests.
travelguide/env/mutex.hpp
2013-08-05 03:10:18 +03:00

37 lines
439 B
C++

#pragma once
#include <pthread.h>
#include "../std/noncopyable.hpp"
namespace env
{
class Condition;
class Mutex : private noncopyable
{
public:
Mutex();
~Mutex();
void Lock();
bool TryLock();
void Unlock();
class Guard
{
Mutex & m_mutex;
public:
Guard(Mutex & m) : m_mutex(m) { m_mutex.Lock(); }
~Guard() { m_mutex.Unlock(); }
};
private:
pthread_mutex_t m_mutex;
friend class Condition;
};
}