libUTL++
utl::RWlock Class Reference

Read/write lock. More...

#include <RWlock.h>

Inheritance diagram for utl::RWlock:

Public Member Functions

bool haveWriteLock () const
 Does the calling thread hold a write-lock? More...
 
void lock (uint_t mode)
 Acquire read- or write-lock. More...
 
void rdlock ()
 Acquire read-lock. More...
 
void wrlock ()
 Acquire write-lock. More...
 
bool trylock (uint_t mode)
 Try to acquire read- or write-lock (without blocking). More...
 
bool tryrdlock ()
 Try to acquire read-lock (without blocking). More...
 
bool trywrlock ()
 Try to acquire write-lock (without blocking). More...
 
void unlock ()
 Release previously acquired lock. More...
 
- Public Member Functions inherited from utl::Object
void clear ()
 Revert to initial state. More...
 
virtual int compare (const Object &rhs) const
 Compare with another object. More...
 
virtual void copy (const Object &rhs)
 Copy another instance. More...
 
virtual void vclone (const Object &rhs)
 Make an exact copy of another instance. More...
 
virtual void steal (Object &rhs)
 "Steal" the internal representation from another instance. More...
 
virtual void dump (Stream &os, uint_t level=uint_t_max) const
 Dump a human-readable representation of self to the given output stream. More...
 
void dumpWithClassName (Stream &os, uint_t indent=4, uint_t level=uint_t_max) const
 Front-end for dump() that prints the object's class name. More...
 
virtual const Object & getKey () const
 Get the key for this object. More...
 
bool hasKey () const
 Determine whether or not the object has a key. More...
 
virtual const Object & getProxiedObject () const
 Get the proxied object (= self if none). More...
 
virtual Object & getProxiedObject ()
 Get the proxied object (= self if none). More...
 
virtual size_t hash (size_t size) const
 Get the hash code for the object. More...
 
bool _isA (const RunTimeClass *runTimeClass) const
 Determine whether self's class is a descendent of the given class. More...
 
virtual String toString () const
 Return a string representation of self. More...
 
 operator String () const
 Conversion to String. More...
 
size_t allocatedSize () const
 Get the total allocated size of this object. More...
 
virtual size_t innerAllocatedSize () const
 Get the "inner" allocated size. More...
 
virtual void addOwnedIt (const class FwdIt *it) const
 Notify self that it owns the given iterator. More...
 
virtual void removeOwnedIt (const class FwdIt *it) const
 Notify self that the given owned iterator has been destroyed. More...
 
bool operator< (const Object &rhs) const
 Less-than operator. More...
 
bool operator<= (const Object &rhs) const
 Less-than-or-equal-to operator. More...
 
bool operator> (const Object &rhs) const
 Greater-than operator. More...
 
bool operator>= (const Object &rhs) const
 Greater-than-or-equal-to operator. More...
 
bool operator== (const Object &rhs) const
 Equal-to operator. More...
 
bool operator!= (const Object &rhs) const
 Unequal-to operator. More...
 
void serializeIn (Stream &is, uint_t mode=ser_default)
 Serialize from an input stream. More...
 
void serializeOut (Stream &os, uint_t mode=ser_default) const
 Serialize to an output stream. More...
 
virtual void serialize (Stream &stream, uint_t io, uint_t mode=ser_default)
 Serialize to or from a stream. More...
 
void serializeOutBoxed (Stream &os, uint_t mode=ser_default) const
 Serialize a boxed object to an output stream. More...
 
- Public Member Functions inherited from utl::NamedObjectMI
 NamedObjectMI ()
 Constructor.
 
 NamedObjectMI (const String &name)
 Constructor. More...
 
void clear ()
 Clear the name. More...
 
const String & getName () const
 Get the name. More...
 
const String * getNamePtr () const
 Get the address of the name. More...
 
void setName (const String &name)
 Set the name. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from utl::Object
static Object * serializeInNullable (Stream &is, uint_t mode=ser_default)
 Serialize a nullptr-able object from an input stream. More...
 
static void serializeOutNullable (const Object *object, Stream &os, uint_t mode=ser_default)
 Serialize a nullptr-able object to an output stream. More...
 
static void serializeNullable (Object *&object, Stream &stream, uint_t io, uint_t mode=ser_default)
 Serialize a nullptr-able object to or from a stream. More...
 
static Object * serializeInBoxed (Stream &is, uint_t mode=ser_default)
 Serialize a boxed object from an input stream. More...
 
static void serializeBoxed (Object *&object, Stream &stream, uint_t io, uint_t mode=ser_default)
 Serialize a boxed object to or from a stream. More...
 

Detailed Description

Read/write lock.

Multiple readers may run concurrently, but a writer must have exclusive access. An RWlock is an efficient way to control access to a shared data structure where reads are much more frequent than writes.

Author
Adam Mckee

Definition at line 33 of file RWlock.h.

Member Function Documentation

◆ haveWriteLock()

bool utl::RWlock::haveWriteLock ( ) const

Does the calling thread hold a write-lock?

Returns
true if calling thread holds write-lock, false otherwise

◆ lock()

void utl::RWlock::lock ( uint_t  mode)
inline

Acquire read- or write-lock.

Parameters
mode(io_rd : read-lock, io_wr : write-lock)

Definition at line 50 of file RWlock.h.

References utl::io_rd.

◆ rdlock()

void utl::RWlock::rdlock ( )

Acquire read-lock.

◆ wrlock()

void utl::RWlock::wrlock ( )

Acquire write-lock.

◆ trylock()

bool utl::RWlock::trylock ( uint_t  mode)
inline

Try to acquire read- or write-lock (without blocking).

Parameters
mode(io_rd : read-lock, io_wr : write-lock)

Definition at line 66 of file RWlock.h.

References utl::deInit(), utl::init(), and utl::io_rd.

◆ tryrdlock()

bool utl::RWlock::tryrdlock ( )

Try to acquire read-lock (without blocking).

Returns
true if read-lock acquired, false otherwise

◆ trywrlock()

bool utl::RWlock::trywrlock ( )

Try to acquire write-lock (without blocking).

Returns
true if write-lock acquired, false otherwise

◆ unlock()

void utl::RWlock::unlock ( )

Release previously acquired lock.


The documentation for this class was generated from the following file: