SXMutexGuard< lockMode > Class Template Reference

Guard class for acquisition of an SXMutex. More...

#include <SXMutex.h>

List of all members.

Public Member Functions

 SXMutexGuard (SXMutex &mx, bool initially_locked=true)
 ~SXMutexGuard ()
void lock ()
void unlock ()
bool locked () const
 operator const void * () const

Private Attributes

SXMutexrwLock
bool m_locked


Detailed Description

template<LockMode lockMode>
class SXMutexGuard< lockMode >

Guard class for acquisition of an SXMutex.

Models the boost::ScopedLock concept. Template parameter LockMode determines the semantics of this lock; the NOWAIT modes may not be used.

Definition at line 102 of file SXMutex.h.


Constructor & Destructor Documentation

template<LockMode lockMode>
SXMutexGuard< lockMode >::SXMutexGuard ( SXMutex mx,
bool  initially_locked = true 
) [inline, explicit]

Definition at line 108 of file SXMutex.h.

References SXMutexGuard< lockMode >::lock().

00109         : rwLock(mx), m_locked(false)
00110     {
00111         if (initially_locked) {
00112             lock();
00113         }
00114     }

template<LockMode lockMode>
SXMutexGuard< lockMode >::~SXMutexGuard (  )  [inline]

Definition at line 116 of file SXMutex.h.

References SXMutexGuard< lockMode >::m_locked, and SXMutexGuard< lockMode >::unlock().

00117     {
00118         if (m_locked) {
00119             unlock();
00120         }
00121     }


Member Function Documentation

template<LockMode lockMode>
void SXMutexGuard< lockMode >::lock (  )  [inline]

Definition at line 123 of file SXMutex.h.

References SXMutexGuard< lockMode >::m_locked, SXMutexGuard< lockMode >::rwLock, and SXMutex::waitFor().

Referenced by SXMutexGuard< lockMode >::SXMutexGuard(), and PagingTestBase::testThreadedOp().

00124     {
00125         assert(!m_locked);
00126         rwLock.waitFor(lockMode);
00127         m_locked = true;
00128     }

template<LockMode lockMode>
void SXMutexGuard< lockMode >::unlock (  )  [inline]

Definition at line 130 of file SXMutex.h.

References SXMutexGuard< lockMode >::m_locked, SXMutex::release(), and SXMutexGuard< lockMode >::rwLock.

Referenced by CacheImpl< PageT, VictimPolicyT >::isPageMapped(), CacheImpl< PageT, VictimPolicyT >::mapPage(), FtrsTableWriterExecStream::open(), CheckpointThread::run(), PagingTestBase::testCheckpointGuarded(), and SXMutexGuard< lockMode >::~SXMutexGuard().

00131     {
00132         assert(m_locked);
00133         rwLock.release(lockMode);
00134         m_locked = false;
00135     }

template<LockMode lockMode>
bool SXMutexGuard< lockMode >::locked (  )  const [inline]

Definition at line 137 of file SXMutex.h.

References SXMutexGuard< lockMode >::m_locked.

00138     {
00139         return m_locked;
00140     }

template<LockMode lockMode>
SXMutexGuard< lockMode >::operator const void * (  )  const [inline]

Definition at line 142 of file SXMutex.h.

References SXMutexGuard< lockMode >::m_locked.

00143     {
00144         return m_locked ? this : 0;
00145     }


Member Data Documentation

template<LockMode lockMode>
SXMutex& SXMutexGuard< lockMode >::rwLock [private]

Definition at line 104 of file SXMutex.h.

Referenced by SXMutexGuard< lockMode >::lock(), and SXMutexGuard< lockMode >::unlock().

template<LockMode lockMode>
bool SXMutexGuard< lockMode >::m_locked [private]

Definition at line 105 of file SXMutex.h.

Referenced by SXMutexGuard< lockMode >::lock(), SXMutexGuard< lockMode >::locked(), SXMutexGuard< lockMode >::operator const void *(), SXMutexGuard< lockMode >::unlock(), and SXMutexGuard< lockMode >::~SXMutexGuard().


The documentation for this class was generated from the following file:
Generated on Mon Jun 22 04:00:47 2009 for Fennel by  doxygen 1.5.1