From: Matt Corallo Date: Sat, 7 Jan 2012 17:12:39 +0000 (-0500) Subject: Add DEBUG_LOCKCONTENTION, to warn each time a thread waits to lock. X-Git-Tag: v0.4.0-unstable~129^2~255^2 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=198fb229a4196aebe264a9fb10558db394e386c5 Add DEBUG_LOCKCONTENTION, to warn each time a thread waits to lock. If compiled with -DDEBUG_LOCKCONTENTION, Bitcoin will print to debug.log each time a thread has to wait for a lock to continue. --- diff --git a/src/util.cpp b/src/util.cpp index 67e1bf8..6a4c2a2 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1153,7 +1153,18 @@ static void pop_lock() void CCriticalSection::Enter(const char* pszName, const char* pszFile, int nLine) { push_lock(this, CLockLocation(pszName, pszFile, nLine)); +#ifdef DEBUG_LOCKCONTENTION + bool result = mutex.try_lock(); + if (!result) + { + printf("LOCKCONTENTION: %s\n", pszName); + printf("Locker: %s:%d\n", pszFile, nLine); + mutex.lock(); + printf("Locked\n"); + } +#else mutex.lock(); +#endif } void CCriticalSection::Leave() { @@ -1170,9 +1181,19 @@ bool CCriticalSection::TryEnter(const char* pszName, const char* pszFile, int nL #else -void CCriticalSection::Enter(const char*, const char*, int) +void CCriticalSection::Enter(const char* pszName, const char* pszFile, int nLine) { +#ifdef DEBUG_LOCKCONTENTION + bool result = mutex.try_lock(); + if (!result) + { + printf("LOCKCONTENTION: %s\n", pszName); + printf("Locker: %s:%d\n", pszFile, nLine); + mutex.lock(); + } +#else mutex.lock(); +#endif } void CCriticalSection::Leave()