SDL-1.2.14
[sdl_omap.git] / docs / html / sdlsemwait.html
1 <HTML
2 ><HEAD
3 ><TITLE
4 >SDL_SemWait</TITLE
5 ><META
6 NAME="GENERATOR"
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
8 "><LINK
9 REL="HOME"
10 TITLE="SDL Library Documentation"
11 HREF="index.html"><LINK
12 REL="UP"
13 TITLE="Multi-threaded Programming"
14 HREF="thread.html"><LINK
15 REL="PREVIOUS"
16 TITLE="SDL_DestroySemaphore"
17 HREF="sdldestroysemaphore.html"><LINK
18 REL="NEXT"
19 TITLE="SDL_SemTryWait"
20 HREF="sdlsemtrywait.html"></HEAD
21 ><BODY
22 CLASS="REFENTRY"
23 BGCOLOR="#FFF8DC"
24 TEXT="#000000"
25 LINK="#0000ee"
26 VLINK="#551a8b"
27 ALINK="#ff0000"
28 ><DIV
29 CLASS="NAVHEADER"
30 ><TABLE
31 SUMMARY="Header navigation table"
32 WIDTH="100%"
33 BORDER="0"
34 CELLPADDING="0"
35 CELLSPACING="0"
36 ><TR
37 ><TH
38 COLSPAN="3"
39 ALIGN="center"
40 >SDL Library Documentation</TH
41 ></TR
42 ><TR
43 ><TD
44 WIDTH="10%"
45 ALIGN="left"
46 VALIGN="bottom"
47 ><A
48 HREF="sdldestroysemaphore.html"
49 ACCESSKEY="P"
50 >Prev</A
51 ></TD
52 ><TD
53 WIDTH="80%"
54 ALIGN="center"
55 VALIGN="bottom"
56 ></TD
57 ><TD
58 WIDTH="10%"
59 ALIGN="right"
60 VALIGN="bottom"
61 ><A
62 HREF="sdlsemtrywait.html"
63 ACCESSKEY="N"
64 >Next</A
65 ></TD
66 ></TR
67 ></TABLE
68 ><HR
69 ALIGN="LEFT"
70 WIDTH="100%"></DIV
71 ><H1
72 ><A
73 NAME="SDLSEMWAIT"
74 ></A
75 >SDL_SemWait</H1
76 ><DIV
77 CLASS="REFNAMEDIV"
78 ><A
79 NAME="AEN8023"
80 ></A
81 ><H2
82 >Name</H2
83 >SDL_SemWait&nbsp;--&nbsp;Lock a semaphore and suspend the thread if the semaphore value is zero.</DIV
84 ><DIV
85 CLASS="REFSYNOPSISDIV"
86 ><A
87 NAME="AEN8026"
88 ></A
89 ><H2
90 >Synopsis</H2
91 ><DIV
92 CLASS="FUNCSYNOPSIS"
93 ><A
94 NAME="AEN8027"
95 ></A
96 ><P
97 ></P
98 ><PRE
99 CLASS="FUNCSYNOPSISINFO"
100 >#include "SDL.h"
101 #include "SDL_thread.h"</PRE
102 ><P
103 ><CODE
104 ><CODE
105 CLASS="FUNCDEF"
106 >int <B
107 CLASS="FSFUNC"
108 >SDL_SemWait</B
109 ></CODE
110 >(SDL_sem *sem);</CODE
111 ></P
112 ><P
113 ></P
114 ></DIV
115 ></DIV
116 ><DIV
117 CLASS="REFSECT1"
118 ><A
119 NAME="AEN8033"
120 ></A
121 ><H2
122 >Description</H2
123 ><P
124 ><TT
125 CLASS="FUNCTION"
126 >SDL_SemWait()</TT
127 > suspends the calling thread until either
128 the semaphore pointed to by <TT
129 CLASS="PARAMETER"
130 ><I
131 >sem</I
132 ></TT
133 > has a positive value,
134 the call is interrupted by a signal or error. If the call is successful it
135 will atomically decrement the semaphore value.</P
136 ><P
137 >After <TT
138 CLASS="FUNCTION"
139 >SDL_SemWait()</TT
140 > is successful, the semaphore
141 can be released and its count atomically incremented by a successful call to
142 <A
143 HREF="sdlsempost.html"
144 >SDL_SemPost</A
145 >.</P
146 ></DIV
147 ><DIV
148 CLASS="REFSECT1"
149 ><A
150 NAME="AEN8041"
151 ></A
152 ><H2
153 >Return Value</H2
154 ><P
155 >Returns <SPAN
156 CLASS="RETURNVALUE"
157 >0</SPAN
158 > if successful or
159 <SPAN
160 CLASS="RETURNVALUE"
161 >-1</SPAN
162 > if there was an error (leaving the semaphore unchanged).</P
163 ></DIV
164 ><DIV
165 CLASS="REFSECT1"
166 ><A
167 NAME="AEN8046"
168 ></A
169 ><H2
170 >Examples</H2
171 ><P
172 ><PRE
173 CLASS="PROGRAMLISTING"
174 >if (SDL_SemWait(my_sem) == -1) {
175         return WAIT_FAILED;
176 }
177
178 ...
179
180 SDL_SemPost(my_sem);</PRE
181 ></P
182 ></DIV
183 ><DIV
184 CLASS="REFSECT1"
185 ><A
186 NAME="AEN8050"
187 ></A
188 ><H2
189 >See Also</H2
190 ><P
191 ><A
192 HREF="sdlcreatesemaphore.html"
193 ><TT
194 CLASS="FUNCTION"
195 >SDL_CreateSemaphore</TT
196 ></A
197 >,
198 <A
199 HREF="sdldestroysemaphore.html"
200 ><TT
201 CLASS="FUNCTION"
202 >SDL_DestroySemaphore</TT
203 ></A
204 >,
205 <A
206 HREF="sdlsemtrywait.html"
207 ><TT
208 CLASS="FUNCTION"
209 >SDL_SemTryWait</TT
210 ></A
211 >,
212 <A
213 HREF="sdlsemwaittimeout.html"
214 ><TT
215 CLASS="FUNCTION"
216 >SDL_SemWaitTimeout</TT
217 ></A
218 >,
219 <A
220 HREF="sdlsempost.html"
221 ><TT
222 CLASS="FUNCTION"
223 >SDL_SemPost</TT
224 ></A
225 >,
226 <A
227 HREF="sdlsemvalue.html"
228 ><TT
229 CLASS="FUNCTION"
230 >SDL_SemValue</TT
231 ></A
232 ></P
233 ></DIV
234 ><DIV
235 CLASS="NAVFOOTER"
236 ><HR
237 ALIGN="LEFT"
238 WIDTH="100%"><TABLE
239 SUMMARY="Footer navigation table"
240 WIDTH="100%"
241 BORDER="0"
242 CELLPADDING="0"
243 CELLSPACING="0"
244 ><TR
245 ><TD
246 WIDTH="33%"
247 ALIGN="left"
248 VALIGN="top"
249 ><A
250 HREF="sdldestroysemaphore.html"
251 ACCESSKEY="P"
252 >Prev</A
253 ></TD
254 ><TD
255 WIDTH="34%"
256 ALIGN="center"
257 VALIGN="top"
258 ><A
259 HREF="index.html"
260 ACCESSKEY="H"
261 >Home</A
262 ></TD
263 ><TD
264 WIDTH="33%"
265 ALIGN="right"
266 VALIGN="top"
267 ><A
268 HREF="sdlsemtrywait.html"
269 ACCESSKEY="N"
270 >Next</A
271 ></TD
272 ></TR
273 ><TR
274 ><TD
275 WIDTH="33%"
276 ALIGN="left"
277 VALIGN="top"
278 >SDL_DestroySemaphore</TD
279 ><TD
280 WIDTH="34%"
281 ALIGN="center"
282 VALIGN="top"
283 ><A
284 HREF="thread.html"
285 ACCESSKEY="U"
286 >Up</A
287 ></TD
288 ><TD
289 WIDTH="33%"
290 ALIGN="right"
291 VALIGN="top"
292 >SDL_SemTryWait</TD
293 ></TR
294 ></TABLE
295 ></DIV
296 ></BODY
297 ></HTML
298 >