8#ifndef HPP_ALIB_THREADS_SHAREDLOCK
9#define HPP_ALIB_THREADS_SHAREDLOCK 1
18#if ALIB_DEBUG_CRITICAL_SECTIONS
22#include <shared_mutex>
25namespace alib {
namespace threads {
72 #if !ALIB_DEBUG && !DOXYGEN
73 std::shared_mutex
mutex;
81 std::shared_timed_mutex
mutex;
94 #if ALIB_DEBUG_CRITICAL_SECTIONS
114 #if ALIB_DEBUG || DOXYGEN
156 #if ALIB_DEBUG || DOXYGEN
virtual ALIB_API bool DCSIsAcquired() const override
ALIB_API bool TryAcquireShared(ALIB_DBG_TAKE_CI)
ALIB_API void AcquireShared(ALIB_DBG_TAKE_CI)
virtual ALIB_API bool DCSIsSharedAcquired() const override
DbgSharedLockAsserter Dbg
The debug tool instance.
ALIB_API void ReleaseShared(ALIB_DBG_TAKE_CI)
ALIB_API bool TryAcquire(ALIB_DBG_TAKE_CI)
ALIB_API void Acquire(ALIB_DBG_TAKE_CI)
ALIB_API void Release(ALIB_DBG_TAKE_CI)
std::atomic< int > DbgWarningMaximumShared
~SharedLock() override
Destructor. With debug-compilations, asserts that this lock is not acquired.
#define ALIB_ASSERT_MODULE(modulename)
#define ALIB_DEBUG_CRITICAL_SECTIONS
void AssertNotOwned(const CallerInfo &assertCI, const CallerInfo &ci, const NString &headline)