1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
|
.TH ACE_RW_Mutex 3 "1 Dec 2001" "ACE" \" -*- nroff -*-
.ad l
.nh
.SH NAME
ACE_RW_Mutex \- Wrapper for readers/writer locks.
.SH SYNOPSIS
.br
.PP
\fC#include <Synch.h>\fR
.PP
Inherited by \fBACE_RW_Thread_Mutex\fR.
.PP
.SS Public Methods
.in +1c
.ti -1c
.RI "\fBACE_RW_Mutex\fR (int type = USYNC_THREAD, const \fBACE_TCHAR\fR *name = 0, void *arg = 0)"
.br
.RI "\fIInitialize a readers/writer lock.\fR"
.ti -1c
.RI "\fB~ACE_RW_Mutex\fR (void)"
.br
.RI "\fIImplicitly destroy a readers/writer lock.\fR"
.ti -1c
.RI "int \fBremove\fR (void)"
.br
.ti -1c
.RI "int \fBacquire_read\fR (void)"
.br
.RI "\fIAcquire a read lock, but block if a writer hold the lock.\fR"
.ti -1c
.RI "int \fBacquire_write\fR (void)"
.br
.RI "\fIAcquire a write lock, but block if any readers or a writer hold the lock.\fR"
.ti -1c
.RI "int \fBtryacquire_read\fR (void)"
.br
.ti -1c
.RI "int \fBtryacquire_write\fR (void)"
.br
.RI "\fIConditionally acquire a write lock (i.e., won't block).\fR"
.ti -1c
.RI "int \fBtryacquire_write_upgrade\fR (void)"
.br
.ti -1c
.RI "int \fBacquire\fR (void)"
.br
.ti -1c
.RI "int \fBtryacquire\fR (void)"
.br
.ti -1c
.RI "int \fBrelease\fR (void)"
.br
.RI "\fIUnlock a readers/writer lock.\fR"
.ti -1c
.RI "const ACE_rwlock_t& \fBlock\fR (void) const"
.br
.RI "\fIReturn the underlying lock.\fR"
.ti -1c
.RI "void \fBdump\fR (void) const"
.br
.RI "\fIDump the state of an object.\fR"
.in -1c
.SS Public Attributes
.in +1c
.ti -1c
.RI "\fBACE_ALLOC_HOOK_DECLARE\fR"
.br
.RI "\fIDeclare the dynamic allocation hooks.\fR"
.in -1c
.SS Protected Attributes
.in +1c
.ti -1c
.RI "ACE_rwlock_t \fBlock_\fR"
.br
.RI "\fIReaders/writer lock.\fR"
.ti -1c
.RI "int \fBremoved_\fR"
.br
.RI "\fIKeeps track of whether <remove> has been called yet to avoid multiple <remove> calls, e.g., explicitly and implicitly in the destructor. This flag isn't protected by a lock, so make sure that you don't have multiple threads simultaneously calling <remove> on the same object, which is a bad idea anyway...\fR"
.in -1c
.SS Private Methods
.in +1c
.ti -1c
.RI "void \fBoperator=\fR (const ACE_RW_Mutex &)"
.br
.ti -1c
.RI "\fBACE_RW_Mutex\fR (const ACE_RW_Mutex &)"
.br
.in -1c
.SH DETAILED DESCRIPTION
.PP
Wrapper for readers/writer locks.
.PP
.PP
These are most useful for applications that have many more parallel readers than writers...
.PP
.SH CONSTRUCTOR & DESTRUCTOR DOCUMENTATION
.PP
.SS ACE_RW_Mutex::ACE_RW_Mutex (int type = USYNC_THREAD, const \fBACE_TCHAR\fR * name = 0, void * arg = 0)
.PP
Initialize a readers/writer lock.
.PP
.SS ACE_RW_Mutex::~ACE_RW_Mutex (void)
.PP
Implicitly destroy a readers/writer lock.
.PP
.SS ACE_RW_Mutex::ACE_RW_Mutex (const ACE_RW_Mutex &)\fC [private]\fR
.PP
.SH MEMBER FUNCTION DOCUMENTATION
.PP
.SS int ACE_RW_Mutex::acquire (void)
.PP
Note, for interface uniformity with other synchronization wrappers we include the method. This is implemented as a write-lock to safe...
.SS int ACE_RW_Mutex::acquire_read (void)
.PP
Acquire a read lock, but block if a writer hold the lock.
.PP
.SS int ACE_RW_Mutex::acquire_write (void)
.PP
Acquire a write lock, but block if any readers or a writer hold the lock.
.PP
.SS void ACE_RW_Mutex::dump (void) const
.PP
Dump the state of an object.
.PP
Reimplemented in \fBACE_RW_Thread_Mutex\fR.
.SS const ACE_rwlock_t & ACE_RW_Mutex::lock (void) const
.PP
Return the underlying lock.
.PP
.SS void ACE_RW_Mutex::operator= (const ACE_RW_Mutex &)\fC [private]\fR
.PP
.SS int ACE_RW_Mutex::release (void)
.PP
Unlock a readers/writer lock.
.PP
.SS int ACE_RW_Mutex::remove (void)
.PP
Explicitly destroy a readers/writer lock. Note that only one thread should call this method since it doesn't protect against race conditions.
.SS int ACE_RW_Mutex::tryacquire (void)
.PP
Note, for interface uniformity with other synchronization wrappers we include the <tryacquire> method. This is implemented as a write-lock to be safe... Returns -1 on failure. If we "failed" because someone else already had the lock, <errno> is set to <EBUSY>.
.SS int ACE_RW_Mutex::tryacquire_read (void)
.PP
Conditionally acquire a read 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>.
.SS int ACE_RW_Mutex::tryacquire_write (void)
.PP
Conditionally acquire a write lock (i.e., won't block).
.PP
.SS int ACE_RW_Mutex::tryacquire_write_upgrade (void)
.PP
Conditionally upgrade a read lock to a write lock. This only works if there are no other readers present, in which case the method returns 0. Otherwise, the method returns -1 and sets <errno> to <EBUSY>. Note that the caller of this method *must* already possess this lock as a read lock (but this condition is not checked by the current implementation).
.PP
Reimplemented in \fBACE_RW_Thread_Mutex\fR.
.SH MEMBER DATA DOCUMENTATION
.PP
.SS ACE_RW_Mutex::ACE_ALLOC_HOOK_DECLARE
.PP
Declare the dynamic allocation hooks.
.PP
Reimplemented in \fBACE_RW_Thread_Mutex\fR.
.SS ACE_rwlock_t ACE_RW_Mutex::lock_\fC [protected]\fR
.PP
Readers/writer lock.
.PP
.SS int ACE_RW_Mutex::removed_\fC [protected]\fR
.PP
Keeps track of whether <remove> has been called yet to avoid multiple <remove> calls, e.g., explicitly and implicitly in the destructor. This flag isn't protected by a lock, so make sure that you don't have multiple threads simultaneously calling <remove> on the same object, which is a bad idea anyway...
.PP
.SH AUTHOR
.PP
Generated automatically by Doxygen for ACE from the source code.
|