diff options
| author | Pieter Wuille <[email protected]> | 2012-11-24 13:55:00 -0800 |
|---|---|---|
| committer | Pieter Wuille <[email protected]> | 2012-11-24 13:55:00 -0800 |
| commit | 3ed1ccb0898b22353e9fcc942b43df98c9a3bf4c (patch) | |
| tree | 65ce94156217689b16702f7526d8f5326f6e7418 | |
| parent | Merge pull request #2013 from sipa/blockheader (diff) | |
| parent | Simplify CMutexLock (diff) | |
| download | discoin-3ed1ccb0898b22353e9fcc942b43df98c9a3bf4c.tar.xz discoin-3ed1ccb0898b22353e9fcc942b43df98c9a3bf4c.zip | |
Merge pull request #2004 from alexanderkjeldaas/simplify-cmutexlock
Simplify CMutexLock
| -rw-r--r-- | src/sync.h | 40 |
1 files changed, 10 insertions, 30 deletions
diff --git a/src/sync.h b/src/sync.h index e80efbe00..9dfc6697c 100644 --- a/src/sync.h +++ b/src/sync.h @@ -37,46 +37,31 @@ class CMutexLock { private: boost::unique_lock<Mutex> lock; -public: void Enter(const char* pszName, const char* pszFile, int nLine) { - if (!lock.owns_lock()) - { - EnterCritical(pszName, pszFile, nLine, (void*)(lock.mutex())); + EnterCritical(pszName, pszFile, nLine, (void*)(lock.mutex())); #ifdef DEBUG_LOCKCONTENTION - if (!lock.try_lock()) - { - PrintLockContention(pszName, pszFile, nLine); + if (!lock.try_lock()) + { + PrintLockContention(pszName, pszFile, nLine); #endif - lock.lock(); + lock.lock(); #ifdef DEBUG_LOCKCONTENTION - } -#endif - } - } - - void Leave() - { - if (lock.owns_lock()) - { - lock.unlock(); - LeaveCritical(); } +#endif } bool TryEnter(const char* pszName, const char* pszFile, int nLine) { + EnterCritical(pszName, pszFile, nLine, (void*)(lock.mutex()), true); + lock.try_lock(); if (!lock.owns_lock()) - { - EnterCritical(pszName, pszFile, nLine, (void*)(lock.mutex()), true); - lock.try_lock(); - if (!lock.owns_lock()) - LeaveCritical(); - } + LeaveCritical(); return lock.owns_lock(); } +public: CMutexLock(Mutex& mutexIn, const char* pszName, const char* pszFile, int nLine, bool fTry = false) : lock(mutexIn, boost::defer_lock) { if (fTry) @@ -95,11 +80,6 @@ public: { return lock.owns_lock(); } - - boost::unique_lock<Mutex> &GetLock() - { - return lock; - } }; typedef CMutexLock<CCriticalSection> CCriticalBlock; |