HomePhabricator

Simplify CMutexLock
bfc96207998cUnpublished

Unpublished Commit ยท Learn More

Repository Importing: This repository is still importing.

Description

Simplify CMutexLock

o Remove unused Leave and GetLock functions
o Make Enter and TryEnter private.
o Simplify Enter and TryEnter.

boost::unique_lock doesn't really know whether the
mutex it wraps is locked or not when the defer_lock
option is used.
The boost::recursive_mutex does not expose this
information, so unique_lock only infers this
knowledge.  When taking the lock is defered, it
(randomly) assumes that the lock is not taken.
boost::unique_lock has the following definition:

      unique_lock(Mutex& m_,defer_lock_t):
          m(&m_),is_locked(false)
      {}

      bool owns_lock() const
      {
          return is_locked;
      }
Thus it is a mistake to check owns_lock() in Enter
and TryEnter - they will always return false.

Details

Provenance
Alexander Kjeldaas <alexander.kjeldaas@gmail.com>Authored on Nov 11 2012, 06:11
deadalnixPushed on May 14 2017, 22:04
Parents
rABC6ca2ea2fa246: Merge pull request #1979 from sipa/corefndoc
Branches
Unknown
Tags
Unknown

Event Timeline

Alexander Kjeldaas <alexander.kjeldaas@gmail.com> committed rABCbfc96207998c: Simplify CMutexLock (authored by Alexander Kjeldaas <alexander.kjeldaas@gmail.com>).Nov 14 2012, 03:00