/*! \file mutex.h
** \brief Template Header
**
-** $Id: mutex.h,v 1.2 2005/01/10 07:40:26 darco Exp $
+** $Id$
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
protected:
void* blackbox;
-
+
public:
-
+
class Lock
{
Mutex& mutex;
Lock(Mutex& x):mutex(x) { mutex.lock(); }
~Lock() { mutex.unlock(); }
};
-
+
Mutex();
~Mutex();
-
+
void lock();
void unlock();
bool try_lock();
bool is_locked();
-
+
private:
//! Non-copyable
Mutex(const Mutex&);
-
+
//! Non-assignable
void operator=(const Mutex&);
};
class RWLock
{
void* blackbox;
-
+
public:
-
+
class ReaderLock
{
RWLock& rw_lock;
WriterLock(RWLock& x):rw_lock(x) { rw_lock.writer_lock(); }
~WriterLock() { rw_lock.writer_unlock(); }
};
-
+
RWLock();
~RWLock();