ldas-tools-al 2.6.7
Loading...
Searching...
No Matches
LDASTools::AL::ReadWriteLock Class Reference

Implements read/write lock symantics. More...

#include <ReadWriteLock.hh>

Collaboration diagram for LDASTools::AL::ReadWriteLock:

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 {
  NONE = 0x0000 , READ = 0x0001 , WRITE = 0x0002 , NONE = 0x0000 ,
  READ = 0x0001 , WRITE = 0x0002
}
 Lock mode. More...
 
enum  lock_state {
  STATE_NONE = 0x0000 , PENDING = 0x0001 , ACTIVE = 0x0002 , STATE_NONE = 0x0000 ,
  PENDING = 0x0001 , ACTIVE = 0x0002
}
 Lock state. More...
 
enum  lock_mode {
  NONE = 0x0000 , READ = 0x0001 , WRITE = 0x0002 , NONE = 0x0000 ,
  READ = 0x0001 , WRITE = 0x0002
}
 Lock mode. More...
 
enum  lock_state {
  STATE_NONE = 0x0000 , PENDING = 0x0001 , ACTIVE = 0x0002 , STATE_NONE = 0x0000 ,
  PENDING = 0x0001 , ACTIVE = 0x0002
}
 Lock state. More...
 
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.
 
 ReadWriteLock (baton_type Lock, mode_type Mode, bool TryLock, const char *Filename, int Linenum)
 Constructor.
 
 ReadWriteLock (baton_type Lock, mode_type Mode, int Timeout, const char *Filename, int Linenum)
 Constructor.
 
virtual ~ReadWriteLock ()
 Destructor.
 
void Modify (mode_type Mode, const char *Filename, int Linenum)
 Modify the mode of lock being held on the resource.
 
void Release (const char *Filename, int Linenum)
 Release the lock.
 
 ReadWriteLock (baton_type Lock, mode_type Mode, const char *Filename, int Linenum)
 Constructor.
 
 ReadWriteLock (baton_type Lock, mode_type Mode, bool TryLock, const char *Filename, int Linenum)
 Constructor.
 
 ReadWriteLock (baton_type Lock, mode_type Mode, int Timeout, const char *Filename, int Linenum)
 Constructor.
 
virtual ~ReadWriteLock ()
 Destructor.
 
void Modify (mode_type Mode, const char *Filename, int Linenum)
 Modify the mode of lock being held on the resource.
 
void Release (const char *Filename, int Linenum)
 Release the lock.
 

Static Public Member Functions

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

Private Attributes

baton_type sync_baton
 

Detailed Description

Implements read/write lock symantics.

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

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.
}
MutexLock::baton_type baton()
Obtain lock.
Definition ThreadPool.cc:56
Manager of the read/write lock resource.
Definition ReadWriteLock.hh:169
Implements read/write lock symantics.
Definition ReadWriteLock.hh:69
@ WRITE
< Read lock allows multiple concurrent reads.
Definition ReadWriteLock.hh:152

Member Typedef Documentation

◆ mode_type

Member Enumeration Documentation

◆ lock_mode [1/2]

Lock mode.

Enumerator
NONE 
READ 

< Initial mode

WRITE 

< Read lock allows multiple concurrent reads.

NONE 
READ 

< Initial mode

WRITE 

< Read lock allows multiple concurrent reads.

◆ lock_mode [2/2]

Lock mode.

Enumerator
NONE 
READ 

< Initial mode

WRITE 

< Read lock allows multiple concurrent reads.

NONE 
READ 

< Initial mode

WRITE 

< Read lock allows multiple concurrent reads.

◆ lock_state [1/2]

Lock state.

Enumerator
STATE_NONE 
PENDING 

< Initial state

ACTIVE 

< Lock requested

STATE_NONE 
PENDING 

< Initial state

ACTIVE 

< Lock requested

◆ lock_state [2/2]

Lock state.

Enumerator
STATE_NONE 
PENDING 

< Initial state

ACTIVE 

< Lock requested

STATE_NONE 
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__ );
@ READ
< Initial mode
Definition ReadWriteLock.hh:151

◆ 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() [1/2]

LDASTools::AL::ReadWriteLock::~ReadWriteLock ( )
virtual

Destructor.

◆ 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.

◆ ~ReadWriteLock() [2/2]

virtual LDASTools::AL::ReadWriteLock::~ReadWriteLock ( )
virtual

Destructor.

Member Function Documentation

◆ Baton() [1/2]

ReadWriteLock::baton_type LDASTools::AL::ReadWriteLock::Baton ( )
static

Create a baton that is appropriate for use with this class.

◆ Baton() [2/2]

static baton_type LDASTools::AL::ReadWriteLock::Baton ( )
static

Create a baton that is appropriate for use with this class.

◆ Interval() [1/2]

int LDASTools::AL::ReadWriteLock::Interval ( int Value)
static

◆ Interval() [2/2]

static int LDASTools::AL::ReadWriteLock::Interval ( int Value)
static

◆ 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.

◆ Timeout() [1/2]

int LDASTools::AL::ReadWriteLock::Timeout ( int Value)
static

◆ Timeout() [2/2]

static int LDASTools::AL::ReadWriteLock::Timeout ( int Value)
static

Member Data Documentation

◆ sync_baton

baton_type LDASTools::AL::ReadWriteLock::sync_baton
private

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