Return Type | Function name | Arguments |
---|---|---|
void | hzLockRWD::Unlock | (void) |
Declared in file: hzLock.h
Defined in file : hzLock.cpp
Function Logic:
Function body:
void hzLockRWD::Unlock (void) { _hzfunc("hzLockRWD::Unlock") ; uint32_t tid ; /* ** if (_hzGlobal_MT) ** { ** tid = pthread_self() ; ** ** if (!m_lockval) ** hzexit(E_CORRUPT, "Attempting to unlock mutex %d that is not locked by any thread", m_Id) ; ** ** if (m_lockval != tid) ** hzexit(E_CORRUPT, "Attempting to unlock mutex %d that is locked by another thread (%u)", m_Id, m_lockval) ; ** ** // Must unset m_lockval before we release the lock ** if (m_recurse) ** { ** m_recurse-- ; ** m_UnlocksR++ ; ** } ** else ** { ** m_lockval = 0 ; ** m_UnlocksP++ ; ** m_Inuse += (RealtimeNano() - m_Granted) ; ** } ** } ** */ if (_hzGlobal_MT) { if (m_lockval == 0xffffffff) hzexit(E_CORRUPT, "Attempting to unlock a deprecated lock") ; tid = pthread_self() ; if (m_lockval == tid) { m_lockval = 0; } else { if (m_lockval != 0xffffffff) { if (m_counter == 0) hzexit(E_CORRUPT, "Lock count already zero") ; while (__sync_add_and_fetch(&m_counter, -1)); } } } }