Fix DEBUG_LOCKCONTENTION

This commit is contained in:
Matt Corallo 2012-06-05 16:12:32 +02:00
parent 45268208ae
commit 4d009243cb
2 changed files with 13 additions and 2 deletions

View file

@ -7,6 +7,14 @@
#include <boost/foreach.hpp> #include <boost/foreach.hpp>
#ifdef DEBUG_LOCKCONTENTION
void PrintLockContention(const char* pszName, const char* pszFile, int nLine)
{
printf("LOCKCONTENTION: %s\n", pszName);
printf("Locker: %s:%d\n", pszFile, nLine);
}
#endif /* DEBUG_LOCKCONTENTION */
#ifdef DEBUG_LOCKORDER #ifdef DEBUG_LOCKORDER
// //
// Early deadlock detection. // Early deadlock detection.

View file

@ -27,6 +27,10 @@ void static inline EnterCritical(const char* pszName, const char* pszFile, int n
void static inline LeaveCritical() {} void static inline LeaveCritical() {}
#endif #endif
#ifdef DEBUG_LOCKCONTENTION
void PrintLockContention(const char* pszName, const char* pszFile, int nLine);
#endif
/** Wrapper around boost::interprocess::scoped_lock */ /** Wrapper around boost::interprocess::scoped_lock */
template<typename Mutex> template<typename Mutex>
class CMutexLock class CMutexLock
@ -43,8 +47,7 @@ public:
#ifdef DEBUG_LOCKCONTENTION #ifdef DEBUG_LOCKCONTENTION
if (!lock.try_lock()) if (!lock.try_lock())
{ {
printf("LOCKCONTENTION: %s\n", pszName); PrintLockContention(pszName, pszFile, nLine);
printf("Locker: %s:%d\n", pszFile, nLine);
#endif #endif
lock.lock(); lock.lock();
#ifdef DEBUG_LOCKCONTENTION #ifdef DEBUG_LOCKCONTENTION