My Project
|
#include <rpl_gtid.h>
Public Member Functions | |
Checkable_rwlock () | |
Initialize this Checkable_rwlock. | |
~Checkable_rwlock () | |
Destroy this Checkable_lock. | |
void | rdlock () |
Acquire the read lock. | |
void | wrlock () |
Acquire the write lock. | |
void | unlock () |
Release the lock (whether it is a write or read lock). | |
bool | is_wrlock () |
void | assert_some_lock () const |
Assert that some thread holds either the read or the write lock. | |
void | assert_some_rdlock () const |
Assert that some thread holds the read lock. | |
void | assert_some_wrlock () const |
Assert that some thread holds the write lock. | |
void | assert_no_wrlock () const |
Assert that no thread holds the write lock. | |
void | assert_no_rdlock () const |
Assert that no thread holds the read lock. | |
void | assert_no_lock () const |
Assert that no thread holds read or write lock. |
This has the functionality of mysql_rwlock_t, with two differences: 1. It has additional operations to check if the read and/or write lock is held at the moment. 2. It is wrapped in an object-oriented interface.
Note that the assertions do not check whether *this* thread has taken the lock (that would be more complicated as it would require a dynamic data structure). Luckily, it is still likely that the assertions find bugs where a thread forgot to take a lock, because most of the time most locks are only used by one thread at a time.
The assertions are no-ops when DBUG is off.
bool Checkable_rwlock::is_wrlock | ( | ) | [inline] |
Return true if the write lock is held. Must only be called by threads that hold a lock.