ACE  6.1.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes
ACE_RW_Process_Mutex Class Reference

Wrapper for readers/writer locks that exist across processes. More...

#include <RW_Process_Mutex.h>

Collaboration diagram for ACE_RW_Process_Mutex:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ACE_RW_Process_Mutex (const ACE_TCHAR *name=0, int flags=O_CREAT|O_RDWR, mode_t mode=ACE_DEFAULT_RW_PROCESS_MUTEX_PERMS)
 ~ACE_RW_Process_Mutex (void)
int remove (void)
int acquire (void)
int tryacquire (void)
int release (void)
 Release lock.
int acquire_read (void)
int acquire_write (void)
int tryacquire_read (void)
int tryacquire_write (void)
int tryacquire_write_upgrade (void)
const ACE_File_Locklock (void) const
 Return the underlying lock.
void dump (void) const
 Dump the state of an object.

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Private Member Functions

const ACE_TCHARunique_name (void)
 Create and return the unique name.

Private Attributes

ACE_TCHAR name_ [ACE_UNIQUE_NAME_LEN]
ACE_File_Lock lock_
 We need this to get the readers/writer semantics...

Detailed Description

Wrapper for readers/writer locks that exist across processes.

Note:
This class uses an ACE_File_Lock as its implementation. Thus, it can only be reliably used between separate processes, rather than threads in the same process. This isn't a limitation of ACE, it's simply the file lock semantics on UNIX and Win32.
Todo:
For systems with pthread_rwlockattr_setpshared one may consider using them to make the mutex faster.

Constructor & Destructor Documentation

ACE_RW_Process_Mutex::ACE_RW_Process_Mutex ( const ACE_TCHAR name = 0,
int  flags = O_CREAT|O_RDWR,
mode_t  mode = ACE_DEFAULT_RW_PROCESS_MUTEX_PERMS 
)

Create a cross-process readers/writer mutex, passing in the optional name, flags and mode

See also:
ACE_File_Lock. If not specified, a name is generated and flags and mode are set to default platform values.

Member Function Documentation

int ACE_RW_Process_Mutex::acquire ( void  )
inline

Same as acquire_write(). Acquire lock ownership; blocks until the lock is acquired or the operation fails.

int ACE_RW_Process_Mutex::acquire_read ( void  )
inline

Acquire read lock; blocks until the lock is acquired or the operation fails.

int ACE_RW_Process_Mutex::acquire_write ( void  )
inline

Acquire write lock; blocks until the lock is acquired or the operation fails.

void ACE_RW_Process_Mutex::dump ( void  ) const

Dump the state of an object.

const ACE_File_Lock & ACE_RW_Process_Mutex::lock ( void  ) const
inline

Return the underlying lock.

int ACE_RW_Process_Mutex::release ( void  )
inline

Release lock.

int ACE_RW_Process_Mutex::remove ( void  )
inline

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

int ACE_RW_Process_Mutex::tryacquire ( void  )
inline

Same as tryacquire_write(). Try to acquire the lock, but do not block if the lock is not immediately acquired.

Return values:
-1on failure. If the lock is already held, errno is set to EBUSY.

Try to acquire the read lock, but do not block if the lock is not immediately acquired.

Return values:
-1on failure. If the lock is already held, errno is set to EBUSY.

Try to acquire the write lock, but do not block if the lock is not immediately acquired.

Return values:
-1on failure. If the lock is already held, errno is set to EBUSY.

Attempt to upgrade a read lock to a write lock. Returns 0 on success, -1 on failure.

const ACE_TCHAR * ACE_RW_Process_Mutex::unique_name ( void  )
private

Create and return the unique name.


Member Data Documentation

Declare the dynamic allocation hooks.

We need this to get the readers/writer semantics...

If the user does not provide a name we generate a unique name in this buffer.


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