SDL-1.2.14
[sdl_omap.git] / docs / html / sdlsemwaittimeout.html
1 <HTML
2 ><HEAD
3 ><TITLE
4 >SDL_SemWaitTimeout</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_SemTryWait"
17 HREF="sdlsemtrywait.html"><LINK
18 REL="NEXT"
19 TITLE="SDL_SemPost"
20 HREF="sdlsempost.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="sdlsemtrywait.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="sdlsempost.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="SDLSEMWAITTIMEOUT"
74 ></A
75 >SDL_SemWaitTimeout</H1
76 ><DIV
77 CLASS="REFNAMEDIV"
78 ><A
79 NAME="AEN8120"
80 ></A
81 ><H2
82 >Name</H2
83 >SDL_SemWaitTimeout&nbsp;--&nbsp;Lock a semaphore, but only wait up to a specified maximum time.</DIV
84 ><DIV
85 CLASS="REFSYNOPSISDIV"
86 ><A
87 NAME="AEN8123"
88 ></A
89 ><H2
90 >Synopsis</H2
91 ><DIV
92 CLASS="FUNCSYNOPSIS"
93 ><A
94 NAME="AEN8124"
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_SemWaitTimeout</B
109 ></CODE
110 >(SDL_sem *sem, Uint32 timeout);</CODE
111 ></P
112 ><P
113 ></P
114 ></DIV
115 ></DIV
116 ><DIV
117 CLASS="REFSECT1"
118 ><A
119 NAME="AEN8130"
120 ></A
121 ><H2
122 >Description</H2
123 ><P
124 ><TT
125 CLASS="FUNCTION"
126 >SDL_SemWaitTimeout()</TT
127 > is a varient of
128 <A
129 HREF="sdlsemwait.html"
130 >SDL_SemWait</A
131 >
132 with a maximum timeout value.
133 If the value of the semaphore pointed to by <TT
134 CLASS="PARAMETER"
135 ><I
136 >sem</I
137 ></TT
138 > is
139 positive (greater than zero) it will atomically decrement the semaphore value
140 and return 0, otherwise it will wait up to <TT
141 CLASS="PARAMETER"
142 ><I
143 >timeout</I
144 ></TT
145 >
146 milliseconds trying to lock the semaphore. This function is to be avoided if
147 possible since on some platforms it is implemented by polling the semaphore
148 every millisecond in a busy loop.</P
149 ><P
150 >After <TT
151 CLASS="FUNCTION"
152 >SDL_SemWaitTimeout()</TT
153 > is successful, the semaphore
154 can be released and its count atomically incremented by a successful call to
155 <A
156 HREF="sdlsempost.html"
157 >SDL_SemPost</A
158 >.</P
159 ></DIV
160 ><DIV
161 CLASS="REFSECT1"
162 ><A
163 NAME="AEN8140"
164 ></A
165 ><H2
166 >Return Value</H2
167 ><P
168 >Returns <SPAN
169 CLASS="RETURNVALUE"
170 >0</SPAN
171 > if the semaphore was successfully locked or
172 either <SPAN
173 CLASS="RETURNVALUE"
174 >SDL_MUTEX_TIMEDOUT</SPAN
175 > or <SPAN
176 CLASS="RETURNVALUE"
177 >-1</SPAN
178 >
179 if the timeout period was exceeded or there was an error, respectivly.</P
180 ><P
181 >If the semaphore was not successfully locked, the semaphore will be unchanged.</P
182 ></DIV
183 ><DIV
184 CLASS="REFSECT1"
185 ><A
186 NAME="AEN8147"
187 ></A
188 ><H2
189 >Examples</H2
190 ><P
191 ><PRE
192 CLASS="PROGRAMLISTING"
193 >res = SDL_SemWaitTimeout(my_sem, WAIT_TIMEOUT_MILLISEC);
194
195 if (res == SDL_MUTEX_TIMEDOUT) {
196         return TRY_AGAIN;
197 }
198 if (res == -1) {
199         return WAIT_ERROR;
200 }
201
202 ...
203
204 SDL_SemPost(my_sem);</PRE
205 ></P
206 ></DIV
207 ><DIV
208 CLASS="REFSECT1"
209 ><A
210 NAME="AEN8151"
211 ></A
212 ><H2
213 >See Also</H2
214 ><P
215 ><A
216 HREF="sdlcreatesemaphore.html"
217 ><TT
218 CLASS="FUNCTION"
219 >SDL_CreateSemaphore</TT
220 ></A
221 >,
222 <A
223 HREF="sdldestroysemaphore.html"
224 ><TT
225 CLASS="FUNCTION"
226 >SDL_DestroySemaphore</TT
227 ></A
228 >,
229 <A
230 HREF="sdlsemwait.html"
231 ><TT
232 CLASS="FUNCTION"
233 >SDL_SemWait</TT
234 ></A
235 >,
236 <A
237 HREF="sdlsemtrywait.html"
238 ><TT
239 CLASS="FUNCTION"
240 >SDL_SemTryWait</TT
241 ></A
242 >,
243 <A
244 HREF="sdlsempost.html"
245 ><TT
246 CLASS="FUNCTION"
247 >SDL_SemPost</TT
248 ></A
249 >,
250 <A
251 HREF="sdlsemvalue.html"
252 ><TT
253 CLASS="FUNCTION"
254 >SDL_SemValue</TT
255 ></A
256 ></P
257 ></DIV
258 ><DIV
259 CLASS="NAVFOOTER"
260 ><HR
261 ALIGN="LEFT"
262 WIDTH="100%"><TABLE
263 SUMMARY="Footer navigation table"
264 WIDTH="100%"
265 BORDER="0"
266 CELLPADDING="0"
267 CELLSPACING="0"
268 ><TR
269 ><TD
270 WIDTH="33%"
271 ALIGN="left"
272 VALIGN="top"
273 ><A
274 HREF="sdlsemtrywait.html"
275 ACCESSKEY="P"
276 >Prev</A
277 ></TD
278 ><TD
279 WIDTH="34%"
280 ALIGN="center"
281 VALIGN="top"
282 ><A
283 HREF="index.html"
284 ACCESSKEY="H"
285 >Home</A
286 ></TD
287 ><TD
288 WIDTH="33%"
289 ALIGN="right"
290 VALIGN="top"
291 ><A
292 HREF="sdlsempost.html"
293 ACCESSKEY="N"
294 >Next</A
295 ></TD
296 ></TR
297 ><TR
298 ><TD
299 WIDTH="33%"
300 ALIGN="left"
301 VALIGN="top"
302 >SDL_SemTryWait</TD
303 ><TD
304 WIDTH="34%"
305 ALIGN="center"
306 VALIGN="top"
307 ><A
308 HREF="thread.html"
309 ACCESSKEY="U"
310 >Up</A
311 ></TD
312 ><TD
313 WIDTH="33%"
314 ALIGN="right"
315 VALIGN="top"
316 >SDL_SemPost</TD
317 ></TR
318 ></TABLE
319 ></DIV
320 ></BODY
321 ></HTML
322 >