#include<pthread.h>
class Mutex
{
public:
Mutex() : m_mutex(PTHREAD_MUTEX_INITIALIZER){
}
~Mutex(){
pthread_mutex_destroy(&m_mutex);
}
public:
void enter(){
pthread_mutex_lock(&m_mutex);
}
void exit(){
pthread_mutex_unlock(&m_mutex);
}
int tryEnter() {
return pthread_mutex_trylock(&m_mutex);
}
protected:
pthread_mutex_t m_mutex;
};
class Lock
{
public:
Lock(Mutex& m) : m_mutex(m) {
m_mutex.enter();
}
~Lock() {
m_mutex.exit();
}
protected:
Mutex& m_mutex;
};