36 InitializeCriticalSection( &mCriticalSection );
38 pthread_mutexattr_t attr;
39 pthread_mutexattr_init( &attr );
41 pthread_mutexattr_settype( &attr, PTHREAD_MUTEX_RECURSIVE );
43 pthread_mutex_init( &
mMutex, &attr );
44 pthread_mutexattr_destroy( &attr );
51 DeleteCriticalSection( &mCriticalSection );
53 pthread_mutex_destroy( &
mMutex );
60 EnterCriticalSection( &mCriticalSection );
62 pthread_mutex_lock( &
mMutex );
69 return TRUE == TryEnterCriticalSection( &mCriticalSection );
71 return 0 == pthread_mutex_trylock( &
mMutex );
78 LeaveCriticalSection( &mCriticalSection );
80 pthread_mutex_unlock( &
mMutex );
96 cout <<
"MRMutex::~MRMutex: poor cleanup detected: rl=" <<
rl <<
", wl=" <<
wl << endl;
125 ThrowError(
"rl < 0 in MRMutex::UnReadLock()");
172 ThrowError(
"wl < 0 in MRMutex::UnWriteLock()");
Mutex()
Primary contructor.
bool TryLock()
Attempts to lock the mutex.
void Lock()
Locks the mutex.
~Mutex()
Destructor, releases allocated resources.
pthread_mutex_t mMutex
A pthread mutex used for mutex implementation using pthread library.
void Unlock()
Unlocks the mutex.