mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
sync: remove DEBUG_LOCKCONTENTION preprocessor directives
to allow logging the lock contentions without the need to define DEBUG_LOCKCONTENTION at compile time.
This commit is contained in:
parent
9b08006bc5
commit
7e69873283
2 changed files with 5 additions and 16 deletions
|
@ -24,15 +24,10 @@
|
|||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#ifdef DEBUG_LOCKCONTENTION
|
||||
#if !defined(HAVE_THREAD_LOCAL)
|
||||
static_assert(false, "thread_local is not supported");
|
||||
#endif
|
||||
void LockContention(const char* pszName, const char* pszFile, int nLine)
|
||||
{
|
||||
LOG_TIME_MICROS_WITH_CATEGORY(strprintf("%s, %s:%d", pszName, pszFile, nLine), BCLog::LOCK);
|
||||
}
|
||||
#endif /* DEBUG_LOCKCONTENTION */
|
||||
|
||||
#ifdef DEBUG_LOCKORDER
|
||||
//
|
||||
|
|
16
src/sync.h
16
src/sync.h
|
@ -126,10 +126,8 @@ using RecursiveMutex = AnnotatedMixin<std::recursive_mutex>;
|
|||
/** Wrapped mutex: supports waiting but not recursive locking */
|
||||
typedef AnnotatedMixin<std::mutex> Mutex;
|
||||
|
||||
#ifdef DEBUG_LOCKCONTENTION
|
||||
/** Prints a lock contention to the log */
|
||||
void LockContention(const char* pszName, const char* pszFile, int nLine);
|
||||
#endif
|
||||
|
||||
/** Wrapper around std::unique_lock style lock for Mutex. */
|
||||
template <typename Mutex, typename Base = typename Mutex::UniqueLock>
|
||||
|
@ -139,22 +137,18 @@ private:
|
|||
void Enter(const char* pszName, const char* pszFile, int nLine)
|
||||
{
|
||||
EnterCritical(pszName, pszFile, nLine, Base::mutex());
|
||||
#ifdef DEBUG_LOCKCONTENTION
|
||||
if (!Base::try_lock()) {
|
||||
LockContention(pszName, pszFile, nLine); // log the contention
|
||||
#endif
|
||||
Base::lock();
|
||||
#ifdef DEBUG_LOCKCONTENTION
|
||||
}
|
||||
#endif
|
||||
if (Base::try_lock()) return;
|
||||
LockContention(pszName, pszFile, nLine); // log the contention
|
||||
Base::lock();
|
||||
}
|
||||
|
||||
bool TryEnter(const char* pszName, const char* pszFile, int nLine)
|
||||
{
|
||||
EnterCritical(pszName, pszFile, nLine, Base::mutex(), true);
|
||||
Base::try_lock();
|
||||
if (!Base::owns_lock())
|
||||
if (!Base::owns_lock()) {
|
||||
LeaveCritical();
|
||||
}
|
||||
return Base::owns_lock();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue