ACE  6.3.3
Public Member Functions | List of all members
ACE_Lock Class Referenceabstract

This is the abstract base class that contains the uniform locking API that is supported by all the ACE synchronization mechanisms. More...

#include <Lock.h>

Inheritance diagram for ACE_Lock:
Inheritance graph
[legend]

Public Member Functions

 ACE_Lock (void)
 CE needs a default constructor here. More...
 
virtual ~ACE_Lock (void)
 Noop virtual destructor. More...
 
virtual int remove (void)=0
 
virtual int acquire (void)=0
 
virtual int tryacquire (void)=0
 
virtual int release (void)=0
 Release the lock. Returns -1 on failure. More...
 
virtual int acquire_read (void)=0
 
virtual int acquire_write (void)=0
 
virtual int tryacquire_read (void)=0
 
virtual int tryacquire_write (void)=0
 
virtual int tryacquire_write_upgrade (void)=0
 

Detailed Description

This is the abstract base class that contains the uniform locking API that is supported by all the ACE synchronization mechanisms.

This class is typically used in conjunction with the ACE_Lock_Adapter in order to provide a polymorphic interface to the ACE synchronization mechanisms (e.g., ACE_Mutex, ACE_Semaphore, ACE_RW_Mutex, etc). Note that the reason that all of ACE doesn't use polymorphic locks is that (1) they add ~20% extra overhead for virtual function calls and (2) objects with virtual functions can't be placed into shared memory.

Constructor & Destructor Documentation

ACE_Lock::ACE_Lock ( void  )
inline

CE needs a default constructor here.

ACE_Lock::~ACE_Lock ( void  )
virtual

Noop virtual destructor.

Member Function Documentation

virtual int ACE_Lock::acquire ( void  )
pure virtual
virtual int ACE_Lock::acquire_read ( void  )
pure virtual
virtual int ACE_Lock::acquire_write ( void  )
pure virtual
virtual int ACE_Lock::release ( void  )
pure virtual
virtual int ACE_Lock::remove ( void  )
pure virtual
virtual int ACE_Lock::tryacquire ( void  )
pure virtual

Conditionally acquire the lock (i.e., won't block). Returns -1 on failure. If we "failed" because someone else already had the lock, errno is set to EBUSY.

Implemented in ACE_Adaptive_Lock, ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >, ACE_Lock_Adapter< ACE_LOCKING_MECHANISM >, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Reactor_Token_T< ACE_DEV_POLL_TOKEN > >, ACE_Lock_Adapter< ACE_Process_Mutex >, and ACE_Lock_Adapter< ACE_Select_Reactor_Token >.

virtual int ACE_Lock::tryacquire_read ( void  )
pure virtual

Conditionally acquire a read lock. If the locking mechanism doesn't support read locks then this just calls acquire(). Returns -1 on failure. If we "failed" because someone else already had the lock, errno is set to EBUSY.

Implemented in ACE_Adaptive_Lock, ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >, ACE_Lock_Adapter< ACE_LOCKING_MECHANISM >, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Reactor_Token_T< ACE_DEV_POLL_TOKEN > >, ACE_Lock_Adapter< ACE_Process_Mutex >, and ACE_Lock_Adapter< ACE_Select_Reactor_Token >.

virtual int ACE_Lock::tryacquire_write ( void  )
pure virtual

Conditionally acquire a write lock. If the locking mechanism doesn't support read locks then this just calls acquire(). Returns -1 on failure. If we "failed" because someone else already had the lock, errno is set to EBUSY.

Implemented in ACE_Adaptive_Lock, ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >, ACE_Lock_Adapter< ACE_LOCKING_MECHANISM >, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Reactor_Token_T< ACE_DEV_POLL_TOKEN > >, ACE_Lock_Adapter< ACE_Process_Mutex >, and ACE_Lock_Adapter< ACE_Select_Reactor_Token >.

virtual int ACE_Lock::tryacquire_write_upgrade ( void  )
pure virtual

Conditionally try to upgrade a lock held for read to a write lock. If the locking mechanism doesn't support read locks then this just calls acquire(). Returns 0 on success, -1 on failure.

Implemented in ACE_Adaptive_Lock, ACE_Reverse_Lock< ACE_LOCKING_MECHANISM >, ACE_Lock_Adapter< ACE_LOCKING_MECHANISM >, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Reactor_Token_T< ACE_DEV_POLL_TOKEN > >, ACE_Lock_Adapter< ACE_Process_Mutex >, and ACE_Lock_Adapter< ACE_Select_Reactor_Token >.


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