37 template <
typename MutexType>
46 static void Lock(MutexType& m)
56 return m.DoTimedLock(xt);
72 template <
typename MutexType>
78 explicit ScopedLock(MutexType& mx,
bool initially_locked=
true)
79 : mMutex(mx), mLocked(false)
93 throw LockError(
"Trying to Lock already locked Mutex" );
102 throw LockError(
"Trying to Unlock already a not yet locked Mutex");
114 operator const void*()
const
116 return mLocked ?
this : 0;
126 template <
typename TryMutexType>
133 : mMutex(mx), mLocked(false)
139 : mMutex(mx), mLocked(false)
141 if (initially_locked)
154 throw LockError(
"Trying to Lock already locked Mutex");
164 throw LockError(
"Trying to Lock already locked Mutex");
172 throw LockError(
"Trying to Unlock already a not yet locked Mutex");
184 operator const void*()
const
186 return mLocked ?
this : 0;
193 TryMutexType& mMutex;
197 template <
typename TimedMutexType>
204 : mMutex(mx), mLocked(false)
211 : mMutex(mx), mLocked(false)
213 if (initially_locked)
226 throw LockError(
"Trying to Lock already locked Mutex");
236 throw LockError(
"Trying to Lock already locked Mutex");
243 throw LockError(
"Trying to Unlock already a not yet locked Mutex");
255 operator const void*()
const
257 return mLocked ?
this : 0;
264 TimedMutexType& mMutex;