ldas-tools-al  2.6.4
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
LDASTools::AL::ReadWriteLock Class Reference

Implements read/write lock symantics. More...

#include <ReadWriteLock.hh>

Inherits LockAcquisitionInterval.

Classes

class  baton_type
 Manager of the read/write lock resource. More...
 
class  BusyError
 Busy lock error. More...
 
class  DeadLockError
 Deadlock error. More...
 
class  TimedoutError
 Time out error. More...
 

Public Types

enum  lock_mode { , READ = 0x0001, WRITE = 0x0002 , READ = 0x0001, WRITE = 0x0002 }
 Lock mode. More...
 
enum  lock_state { , PENDING = 0x0001, ACTIVE = 0x0002 , PENDING = 0x0001, ACTIVE = 0x0002 }
 Lock state. More...
 
enum  lock_mode { , READ = 0x0001, WRITE = 0x0002 , READ = 0x0001, WRITE = 0x0002 }
 Lock mode. More...
 
enum  lock_state { , PENDING = 0x0001, ACTIVE = 0x0002 , PENDING = 0x0001, ACTIVE = 0x0002 }
 Lock state. More...
 
typedef enum LDASTools::AL::ReadWriteLock::lock_mode mode_type
 Lock mode.
 
typedef enum LDASTools::AL::ReadWriteLock::lock_mode mode_type
 Lock mode.
 

Public Member Functions

 ReadWriteLock (baton_type Lock, mode_type Mode, const char *Filename, int Linenum)
 Constructor. More...
 
 ReadWriteLock (baton_type Lock, mode_type Mode, bool TryLock, const char *Filename, int Linenum)
 Constructor. More...
 
 ReadWriteLock (baton_type Lock, mode_type Mode, int Timeout, const char *Filename, int Linenum)
 Constructor. More...
 
virtual ~ReadWriteLock ()
 Destructor.
 
void Modify (mode_type Mode, const char *Filename, int Linenum)
 Modify the mode of lock being held on the resource. More...
 
void Release (const char *Filename, int Linenum)
 Release the lock. More...
 
 ReadWriteLock (baton_type Lock, mode_type Mode, const char *Filename, int Linenum)
 Constructor. More...
 
 ReadWriteLock (baton_type Lock, mode_type Mode, bool TryLock, const char *Filename, int Linenum)
 Constructor. More...
 
 ReadWriteLock (baton_type Lock, mode_type Mode, int Timeout, const char *Filename, int Linenum)
 Constructor. More...
 
virtual ~ReadWriteLock ()
 Destructor.
 
void Modify (mode_type Mode, const char *Filename, int Linenum)
 Modify the mode of lock being held on the resource. More...
 
void Release (const char *Filename, int Linenum)
 Release the lock. More...
 

Static Public Member Functions

static baton_type Baton ()
 Create a baton that is appropriate for use with this class.
 
static void ThreadCancel (void *VLock)
 Handler for thead cancelation. More...
 
static baton_type Baton ()
 Create a baton that is appropriate for use with this class.
 
static void ThreadCancel (void *VLock)
 Handler for thead cancelation. More...
 

Detailed Description

Implements read/write lock symantics.

This class provides proper garbage collection of system resource used to implement thread safe read/write locks.

ReadWriteLock::baton_type baton;
void
threaded_func()
{
__FILE__, __LINE__ );
// modify things that should only be done by a single thread
...
// As lock goes out of scope, the destructor is called
// thereby releasing lock held on baton.
}

Member Enumeration Documentation

◆ lock_mode [1/2]

Lock mode.

Enumerator
READ 

< Initial mode

WRITE 

< Read lock allows multiple concurrent reads.

READ 

< Initial mode

WRITE 

< Read lock allows multiple concurrent reads.

◆ lock_mode [2/2]

Lock mode.

Enumerator
READ 

< Initial mode

WRITE 

< Read lock allows multiple concurrent reads.

READ 

< Initial mode

WRITE 

< Read lock allows multiple concurrent reads.

◆ lock_state [1/2]

Lock state.

Enumerator
PENDING 

< Initial state

ACTIVE 

< Lock requested

PENDING 

< Initial state

ACTIVE 

< Lock requested

◆ lock_state [2/2]

Lock state.

Enumerator
PENDING 

< Initial state

ACTIVE 

< Lock requested

PENDING 

< Initial state

ACTIVE 

< Lock requested

Constructor & Destructor Documentation

◆ ReadWriteLock() [1/6]

LDASTools::AL::ReadWriteLock::ReadWriteLock ( baton_type  Lock,
mode_type  Mode,
const char *  Filename,
int  Linenum 
)

Constructor.

Parameters
[in]LockBaton controlling access to the resource.
[in]ModeAny of the lock_modes.
[in]FileThe filename from where the call was made.
[in]LineThe line number from where the call was made.
l.Lock( ReadWriteLock::READ, __FILE__, __LINE__ );

◆ ReadWriteLock() [2/6]

LDASTools::AL::ReadWriteLock::ReadWriteLock ( baton_type  Lock,
mode_type  Mode,
bool  TryLock,
const char *  Filename,
int  Linenum 
)

Constructor.

Parameters
[in]LockBaton controlling access to the resource.
[in]ModeAny of the lock_modes.
[in]TryLockIf true, then return immediately wether or not the lock was obtained.
[in]FileThe filename from where the call was made.
[in]LineThe line number from where the call was made.

◆ ReadWriteLock() [3/6]

LDASTools::AL::ReadWriteLock::ReadWriteLock ( baton_type  Lock,
mode_type  Mode,
int  Timeout,
const char *  Filename,
int  Linenum 
)

Constructor.

Parameters
[in]LockBaton controlling access to the resource.
[in]ModeAny of the lock_modes.
[in]TimeoutTime limit in seconds in which to acquire the lock. A value of zero (0) indicates that the method should wait until the lock is granted.
[in]FileThe filename from where the call was made.
[in]LineThe line number from where the call was made.

◆ ReadWriteLock() [4/6]

LDASTools::AL::ReadWriteLock::ReadWriteLock ( baton_type  Lock,
mode_type  Mode,
const char *  Filename,
int  Linenum 
)

Constructor.

Parameters
[in]LockBaton controlling access to the resource.
[in]ModeAny of the lock_modes.
[in]FileThe filename from where the call was made.
[in]LineThe line number from where the call was made.
l.Lock( ReadWriteLock::READ, __FILE__, __LINE__ );

◆ ReadWriteLock() [5/6]

LDASTools::AL::ReadWriteLock::ReadWriteLock ( baton_type  Lock,
mode_type  Mode,
bool  TryLock,
const char *  Filename,
int  Linenum 
)

Constructor.

Parameters
[in]LockBaton controlling access to the resource.
[in]ModeAny of the lock_modes.
[in]TryLockIf true, then return immediately wether or not the lock was obtained.
[in]FileThe filename from where the call was made.
[in]LineThe line number from where the call was made.

◆ ReadWriteLock() [6/6]

LDASTools::AL::ReadWriteLock::ReadWriteLock ( baton_type  Lock,
mode_type  Mode,
int  Timeout,
const char *  Filename,
int  Linenum 
)

Constructor.

Parameters
[in]LockBaton controlling access to the resource.
[in]ModeAny of the lock_modes.
[in]TimeoutTime limit in seconds in which to acquire the lock. A value of zero (0) indicates that the method should wait until the lock is granted.
[in]FileThe filename from where the call was made.
[in]LineThe line number from where the call was made.

Member Function Documentation

◆ Modify() [1/2]

void LDASTools::AL::ReadWriteLock::Modify ( mode_type  Mode,
const char *  Filename,
int  Linenum 
)

Modify the mode of lock being held on the resource.

Parameters
[in]ModeThe new mode to be held on the resource.
[in]FileThe filename from where the call was made.
[in]LineThe line number from where the call was made.

◆ Modify() [2/2]

void LDASTools::AL::ReadWriteLock::Modify ( mode_type  Mode,
const char *  Filename,
int  Linenum 
)

Modify the mode of lock being held on the resource.

Parameters
[in]ModeThe new mode to be held on the resource.
[in]FileThe filename from where the call was made.
[in]LineThe line number from where the call was made.

◆ Release() [1/2]

void LDASTools::AL::ReadWriteLock::Release ( const char *  Filename,
int  Linenum 
)

Release the lock.

Parameters
[in]FileThe filename from where the call was made.
[in]LineThe line number from where the call was made.

◆ Release() [2/2]

void LDASTools::AL::ReadWriteLock::Release ( const char *  Filename,
int  Linenum 
)

Release the lock.

Parameters
[in]FileThe filename from where the call was made.
[in]LineThe line number from where the call was made.

◆ ThreadCancel() [1/2]

static void LDASTools::AL::ReadWriteLock::ThreadCancel ( void *  VLock)
static

Handler for thead cancelation.

Parameters
[in]VLockThe VLock is a pointer to a ReadWriteLock object that holds a lock.

◆ ThreadCancel() [2/2]

static void LDASTools::AL::ReadWriteLock::ThreadCancel ( void *  VLock)
static

Handler for thead cancelation.

Parameters
[in]VLockThe VLock is a pointer to a ReadWriteLock object that holds a lock.

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