Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Lock Class Reference

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

#include <Synch.h>

Inheritance diagram for ACE_Lock:

Inheritance graph
[legend]
List of all members.

Public Methods

 ACE_Lock (void)
 CE needs a default ctor here. More...

virtual ~ACE_Lock (void)
 Noop virtual destructor. More...

virtual int remove (void)=0
 Explicitly destroy the lock. More...

virtual int acquire (void)=0
 Block the thread until the lock is acquired. Returns -1 on failure. More...

virtual int tryacquire (void)=0
 Conditionally acquire the lock (i.e., won't block). More...

virtual int release (void)=0
 Release the lock. Returns -1 on failure. More...

virtual int acquire_read (void)=0
 Block until the thread acquires a read lock. More...

virtual int acquire_write (void)=0
 Block until the thread acquires a write lock. More...

virtual int tryacquire_read (void)=0
 Conditionally acquire a read lock. More...

virtual int tryacquire_write (void)=0
 Conditionally acquire a write lock. More...

virtual int tryacquire_write_upgrade (void)=0
 Conditionally try to upgrade a lock held for read to a write lock. More...


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_INLINE ACE_Lock::ACE_Lock void   
 

CE needs a default ctor here.

ACE_Lock::~ACE_Lock void    [virtual]
 

Noop virtual destructor.


Member Function Documentation

virtual int ACE_Lock::acquire void    [pure virtual]
 

Block the thread until the lock is acquired. Returns -1 on failure.

Reimplemented in ACE_Adaptive_Lock, ACE_Lock_Adapter, ACE_Reverse_Lock, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Process_Mutex >, ACE_Lock_Adapter< ACE_SYNCH_MUTEX >, ACE_Lock_Adapter< ACE_Select_Reactor_Token >, and ACE_Reverse_Lock< MUTEX >.

virtual int ACE_Lock::acquire_read void    [pure virtual]
 

Block until the thread acquires a read lock.

If the locking mechanism doesn't support read locks then this just calls <acquire>. Returns -1 on failure.

Reimplemented in ACE_Adaptive_Lock, ACE_Lock_Adapter, ACE_Reverse_Lock, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Process_Mutex >, ACE_Lock_Adapter< ACE_SYNCH_MUTEX >, ACE_Lock_Adapter< ACE_Select_Reactor_Token >, and ACE_Reverse_Lock< MUTEX >.

virtual int ACE_Lock::acquire_write void    [pure virtual]
 

Block until the thread acquires a write lock.

If the locking mechanism doesn't support read locks then this just calls <acquire>. Returns -1 on failure.

Reimplemented in ACE_Adaptive_Lock, ACE_Lock_Adapter, ACE_Reverse_Lock, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Process_Mutex >, ACE_Lock_Adapter< ACE_SYNCH_MUTEX >, ACE_Lock_Adapter< ACE_Select_Reactor_Token >, and ACE_Reverse_Lock< MUTEX >.

virtual int ACE_Lock::release void    [pure virtual]
 

Release the lock. Returns -1 on failure.

Reimplemented in ACE_Adaptive_Lock, ACE_Lock_Adapter, ACE_Reverse_Lock, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Process_Mutex >, ACE_Lock_Adapter< ACE_SYNCH_MUTEX >, ACE_Lock_Adapter< ACE_Select_Reactor_Token >, and ACE_Reverse_Lock< MUTEX >.

virtual int ACE_Lock::remove void    [pure virtual]
 

Explicitly destroy the lock.

Note that only one thread should call this method since it doesn't protect against race conditions.

Reimplemented in ACE_Adaptive_Lock, ACE_Lock_Adapter, ACE_Reverse_Lock, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Process_Mutex >, ACE_Lock_Adapter< ACE_SYNCH_MUTEX >, ACE_Lock_Adapter< ACE_Select_Reactor_Token >, and ACE_Reverse_Lock< MUTEX >.

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

Reimplemented in ACE_Adaptive_Lock, ACE_Lock_Adapter, ACE_Reverse_Lock, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Process_Mutex >, ACE_Lock_Adapter< ACE_SYNCH_MUTEX >, ACE_Lock_Adapter< ACE_Select_Reactor_Token >, and ACE_Reverse_Lock< MUTEX >.

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

Reimplemented in ACE_Adaptive_Lock, ACE_Lock_Adapter, ACE_Reverse_Lock, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Process_Mutex >, ACE_Lock_Adapter< ACE_SYNCH_MUTEX >, ACE_Lock_Adapter< ACE_Select_Reactor_Token >, and ACE_Reverse_Lock< MUTEX >.

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

Reimplemented in ACE_Adaptive_Lock, ACE_Lock_Adapter, ACE_Reverse_Lock, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Process_Mutex >, ACE_Lock_Adapter< ACE_SYNCH_MUTEX >, ACE_Lock_Adapter< ACE_Select_Reactor_Token >, and ACE_Reverse_Lock< MUTEX >.

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.

Reimplemented in ACE_Adaptive_Lock, ACE_Lock_Adapter, ACE_Reverse_Lock, ACE_Lock_Adapter< ACE_SELECT_REACTOR_TOKEN >, ACE_Lock_Adapter< ACE_Process_Mutex >, ACE_Lock_Adapter< ACE_SYNCH_MUTEX >, ACE_Lock_Adapter< ACE_Select_Reactor_Token >, and ACE_Reverse_Lock< MUTEX >.


The documentation for this class was generated from the following files:
Generated on Fri Nov 22 05:58:53 2002 for ACE by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001