From bba9bd0d9dd06f13a6b0c89181864453cab5c858 Mon Sep 17 00:00:00 2001 From: Thomas Snider Date: Sat, 18 Nov 2017 11:35:14 -0800 Subject: Switched sync.{cpp,h} to std threading primitives. --- src/sync.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'src/sync.cpp') diff --git a/src/sync.cpp b/src/sync.cpp index fcc6ddc35..116533eb4 100644 --- a/src/sync.cpp +++ b/src/sync.cpp @@ -4,13 +4,12 @@ #include +#include #include #include #include -#include - #ifdef DEBUG_LOCKCONTENTION void PrintLockContention(const char* pszName, const char* pszFile, int nLine) { @@ -45,8 +44,8 @@ struct CLockLocation { return mutexName + " " + sourceFile + ":" + itostr(sourceLine) + (fTry ? " (TRY)" : ""); } - bool fTry; private: + bool fTry; std::string mutexName; std::string sourceFile; int sourceLine; @@ -67,10 +66,10 @@ struct LockData { LockOrders lockorders; InvLockOrders invlockorders; - boost::mutex dd_mutex; + std::mutex dd_mutex; } static lockdata; -boost::thread_specific_ptr lockstack; +static thread_local std::unique_ptr lockstack; static void potential_deadlock_detected(const std::pair& mismatch, const LockStack& s1, const LockStack& s2) { @@ -100,12 +99,12 @@ static void potential_deadlock_detected(const std::pair& mismatch, static void push_lock(void* c, const CLockLocation& locklocation) { - if (lockstack.get() == nullptr) + if (!lockstack) lockstack.reset(new LockStack); - boost::unique_lock lock(lockdata.dd_mutex); + std::lock_guard lock(lockdata.dd_mutex); - (*lockstack).push_back(std::make_pair(c, locklocation)); + lockstack->push_back(std::make_pair(c, locklocation)); for (const std::pair & i : (*lockstack)) { if (i.first == c) @@ -171,7 +170,7 @@ void DeleteLock(void* cs) // We're already shutting down. return; } - boost::unique_lock lock(lockdata.dd_mutex); + std::lock_guard lock(lockdata.dd_mutex); std::pair item = std::make_pair(cs, nullptr); LockOrders::iterator it = lockdata.lockorders.lower_bound(item); while (it != lockdata.lockorders.end() && it->first.first == cs) { -- cgit v1.2.3 From f7f7e2cd340c088e82d09090eb275b98b34a9812 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Mon, 27 Nov 2017 17:08:27 -0500 Subject: threads: add a thread_local autoconf check --- src/sync.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/sync.cpp') diff --git a/src/sync.cpp b/src/sync.cpp index 116533eb4..3f51383ea 100644 --- a/src/sync.cpp +++ b/src/sync.cpp @@ -11,6 +11,9 @@ #include #ifdef DEBUG_LOCKCONTENTION +#if !defined(HAVE_THREAD_LOCAL) +static_assert(false, "thread_local is not supported"); +#endif void PrintLockContention(const char* pszName, const char* pszFile, int nLine) { LogPrintf("LOCKCONTENTION: %s\n", pszName); -- cgit v1.2.3