File: ACE_RW_Mutex.3

package info (click to toggle)
ace 5.2.1-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 26,856 kB
  • ctags: 18,677
  • sloc: cpp: 171,831; makefile: 48,840; sh: 10,192; perl: 8,582; exp: 787; yacc: 387; lex: 140; csh: 20
file content (178 lines) | stat: -rw-r--r-- 5,486 bytes parent folder | download
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.