diff --git a/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelConditionsSummaryTool.cxx b/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelConditionsSummaryTool.cxx index ad9f03b2f11b76f905887a0a230d41013d3db6b3..9b983ac600737eab76202e62dbbf3427247b1e77 100644 --- a/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelConditionsSummaryTool.cxx +++ b/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelConditionsSummaryTool.cxx @@ -87,7 +87,7 @@ PixelConditionsSummaryTool::IDCCacheEntry* PixelConditionsSummaryTool::getCacheE uint64_t PixelConditionsSummaryTool::getBSErrorWord(const IdentifierHash& moduleHash, const EventContext& ctx) const { if (!m_useByteStream) { return 0; } - std::lock_guard<std::mutex> lock{m_cacheMutex}; + std::scoped_lock<std::mutex> lock{*m_cacheMutex.get(ctx)}; auto idcCachePtr = getCacheEntry(ctx)->IDCCache; if (idcCachePtr==nullptr) { ATH_MSG_ERROR("PixelConditionsSummaryTool No cache! " ); diff --git a/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelConditionsSummaryTool.h b/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelConditionsSummaryTool.h index cd02679876eb8e2830c4e2180dcd02b3635bd5fb..d69ca0c34aa44143776bd52f7557c6f115225dd9 100644 --- a/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelConditionsSummaryTool.h +++ b/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelConditionsSummaryTool.h @@ -102,7 +102,7 @@ class PixelConditionsSummaryTool: public AthAlgTool, public IInDetConditionsTool const uint64_t m_missingErrorInfo{std::numeric_limits<uint64_t>::max()-3000000000}; - mutable std::mutex m_cacheMutex{}; + mutable SG::SlotSpecificObj<std::mutex> m_cacheMutex ATLAS_THREAD_SAFE; struct IDCCacheEntry { EventContext::ContextEvt_t eventId = EventContext::INVALID_CONTEXT_EVT; // invalid event ID for the start diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_ByteStreamErrorsTool.cxx b/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_ByteStreamErrorsTool.cxx index 8bdca590b7b8a9c8612b7aef1e87c5955217d284..d505c4fae7246d15da58fe170948dab629aa1ab0 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_ByteStreamErrorsTool.cxx +++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_ByteStreamErrorsTool.cxx @@ -102,7 +102,7 @@ SCT_ByteStreamErrorsTool::IDCCacheEntry* SCT_ByteStreamErrorsTool::getCacheEntry bool SCT_ByteStreamErrorsTool::isGood(const IdentifierHash& elementIdHash, const EventContext& ctx) const { { - std::lock_guard<std::mutex> lock{m_cacheMutex}; + std::scoped_lock<std::mutex> lock{*m_cacheMutex.get(ctx)}; ATH_MSG_VERBOSE("SCT_ByteStreamErrorsTool isGood called for " << elementIdHash); auto idcCachePtr{getCacheEntry(ctx)->IDCCache}; if (idcCachePtr == nullptr) { @@ -351,7 +351,7 @@ SCT_ByteStreamErrorsTool::fillData(const EventContext& ctx) const { unsigned int SCT_ByteStreamErrorsTool::tempMaskedChips(const Identifier& moduleId, const EventContext& ctx) const { ATH_MSG_VERBOSE("SCT_ByteStreamErrorsTool tempMaskedChips"); - std::lock_guard<std::mutex> lock{m_cacheMutex}; + std::scoped_lock<std::mutex> lock{*m_cacheMutex.get(ctx)}; auto cacheEntry{getCacheEntry(ctx)}; if (cacheEntry->IDCCache == nullptr) return 0; @@ -370,7 +370,7 @@ unsigned int SCT_ByteStreamErrorsTool::tempMaskedChips(const Identifier& moduleI unsigned int SCT_ByteStreamErrorsTool::abcdErrorChips(const Identifier& moduleId, const EventContext& ctx) const { ATH_MSG_VERBOSE("SCT_ByteStreamErrorsTool abcdErrorChips"); - std::lock_guard<std::mutex> lock{m_cacheMutex}; + std::scoped_lock<std::mutex> lock{*m_cacheMutex.get(ctx)}; auto cacheEntry{getCacheEntry(ctx)}; if (cacheEntry->IDCCache == nullptr) return 0; diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_ByteStreamErrorsTool.h b/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_ByteStreamErrorsTool.h index e5c3d21e235bec1bc9eb8f521ba76ae2b50133e2..029d346dd93dc860c80a37557504cb41908f2919 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_ByteStreamErrorsTool.h +++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_ByteStreamErrorsTool.h @@ -37,7 +37,6 @@ #include <atomic> #include <functional> #include <unordered_map> -#include <mutex> #include <vector> /** forward declarations */ @@ -101,7 +100,7 @@ private: const SCT_ID* m_sct_id{nullptr}; IdContext m_cntx_sct; - mutable std::mutex m_cacheMutex{}; + mutable SG::SlotSpecificObj<std::mutex> m_cacheMutex ATLAS_THREAD_SAFE; struct IDCCacheEntry { EventContext::ContextEvt_t eventId{EventContext::INVALID_CONTEXT_EVT}; // invalid event ID for the start const IDCInDetBSErrContainer_Cache* IDCCache{nullptr}; @@ -125,7 +124,7 @@ private: } }; - mutable SG::SlotSpecificObj<IDCCacheEntry> m_eventCache ATLAS_THREAD_SAFE; // Guarded by m_cacheMutex + mutable SG::SlotSpecificObj<IDCCacheEntry> m_eventCache ATLAS_THREAD_SAFE; /** * Obtains container form the SG, if it is missing it will complain (hard-coded 3 times per job) and return nullptr