8 #ifndef _INC_cThreadLockRW_H
9 #define _INC_cThreadLockRW_H
10 #ifndef NO_PRAGMA_ONCE
30 cInterlockedInt m_nReaders;
31 cInterlockedInt m_nWriters;
55 if (m_nWriters.Exchange(1) == 1)
61 while (m_nReaders != 0)
104 : m_bLostOrder(false)
109 ASSERT(m_nReadLockCount == 0);
110 ASSERT(m_nOtherReadLockCount == 0);
116 if (SUPER_t::LockTry())
119 m_nReadLockCount.IncV();
123 m_nOtherReadLockCount.IncV();
124 if (m_nReadLockCount == get_LockCount())
180 const TYPE* get_Ptr()
const
182 return(this->m_pObj);
#define GRAYCORE_LINK
Definition: GrayCore.h:47
#define TYPE
Definition: StrT.cpp:38
#define ASSERT(exp)
Definition: cDebugAssert.h:87
#define UNITTEST_FRIEND(n)
Define this in the class body to be unit tested. Allow the unit test to access private/protected stuf...
Definition: cUnitTestDecl.h:17
Definition: cThreadLockRW.h:165
Definition: cThreadLockRW.h:187
Definition: cNonCopyable.h:17
Definition: cRefPtr.h:225
Definition: cThreadLockRW.h:138
cThreadGuardRead(cThreadLockRW &rLock)
Definition: cThreadLockRW.h:143
static void SleepCurrent(TIMESYS_t uMs=cTimeSys::k_FREQ) noexcept
Definition: cThreadLock.h:122
Definition: cThreadLock.h:173
Definition: cThreadLock.h:205
Definition: cThreadLockRW.h:22
void DecReadLockCount()
Definition: cThreadLockRW.h:45
void Lock()
Definition: cThreadLockRW.h:50
void IncReadLockCount()
Definition: cThreadLockRW.h:34
void Unlock()
Definition: cThreadLockRW.h:68
Definition: cThreadLockRW.h:76
~cThreadLockRW()
Definition: cThreadLockRW.h:107
cThreadLockRW()
Definition: cThreadLockRW.h:103
void IncReadLockCount()
Definition: cThreadLockRW.h:113
void DecReadLockCount()
Definition: cThreadLockRW.h:131
bool m_bLostOrder
can't figure who is thread.
Definition: cThreadLockRW.h:100
cInterlockedInt m_nReadLockCount
How many readers (for orig m_nLockThreadID)
Definition: cThreadLockRW.h:98
cInterlockedInt m_nOtherReadLockCount
How many outside (not on orig thread) readers.
Definition: cThreadLockRW.h:99
Definition: cThreadLockRW.h:157
< The main namespace for all Core functions.
Definition: GrayCore.cpp:14
cLockerT< cThreadLockRW > cThreadGuardWrite
Definition: cThreadLockRW.h:150