SDL-1.2.14
[sdl_omap.git] / docs / html / sdlsemwaittimeout.html
CommitLineData
e14743d1 1<HTML
2><HEAD
3><TITLE
4>SDL_SemWaitTimeout</TITLE
5><META
6NAME="GENERATOR"
7CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
8"><LINK
9REL="HOME"
10TITLE="SDL Library Documentation"
11HREF="index.html"><LINK
12REL="UP"
13TITLE="Multi-threaded Programming"
14HREF="thread.html"><LINK
15REL="PREVIOUS"
16TITLE="SDL_SemTryWait"
17HREF="sdlsemtrywait.html"><LINK
18REL="NEXT"
19TITLE="SDL_SemPost"
20HREF="sdlsempost.html"></HEAD
21><BODY
22CLASS="REFENTRY"
23BGCOLOR="#FFF8DC"
24TEXT="#000000"
25LINK="#0000ee"
26VLINK="#551a8b"
27ALINK="#ff0000"
28><DIV
29CLASS="NAVHEADER"
30><TABLE
31SUMMARY="Header navigation table"
32WIDTH="100%"
33BORDER="0"
34CELLPADDING="0"
35CELLSPACING="0"
36><TR
37><TH
38COLSPAN="3"
39ALIGN="center"
40>SDL Library Documentation</TH
41></TR
42><TR
43><TD
44WIDTH="10%"
45ALIGN="left"
46VALIGN="bottom"
47><A
48HREF="sdlsemtrywait.html"
49ACCESSKEY="P"
50>Prev</A
51></TD
52><TD
53WIDTH="80%"
54ALIGN="center"
55VALIGN="bottom"
56></TD
57><TD
58WIDTH="10%"
59ALIGN="right"
60VALIGN="bottom"
61><A
62HREF="sdlsempost.html"
63ACCESSKEY="N"
64>Next</A
65></TD
66></TR
67></TABLE
68><HR
69ALIGN="LEFT"
70WIDTH="100%"></DIV
71><H1
72><A
73NAME="SDLSEMWAITTIMEOUT"
74></A
75>SDL_SemWaitTimeout</H1
76><DIV
77CLASS="REFNAMEDIV"
78><A
79NAME="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
85CLASS="REFSYNOPSISDIV"
86><A
87NAME="AEN8123"
88></A
89><H2
90>Synopsis</H2
91><DIV
92CLASS="FUNCSYNOPSIS"
93><A
94NAME="AEN8124"
95></A
96><P
97></P
98><PRE
99CLASS="FUNCSYNOPSISINFO"
100>#include "SDL.h"
101#include "SDL_thread.h"</PRE
102><P
103><CODE
104><CODE
105CLASS="FUNCDEF"
106>int <B
107CLASS="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
117CLASS="REFSECT1"
118><A
119NAME="AEN8130"
120></A
121><H2
122>Description</H2
123><P
124><TT
125CLASS="FUNCTION"
126>SDL_SemWaitTimeout()</TT
127> is a varient of
128<A
129HREF="sdlsemwait.html"
130>SDL_SemWait</A
131>
132with a maximum timeout value.
133If the value of the semaphore pointed to by <TT
134CLASS="PARAMETER"
135><I
136>sem</I
137></TT
138> is
139positive (greater than zero) it will atomically decrement the semaphore value
140and return 0, otherwise it will wait up to <TT
141CLASS="PARAMETER"
142><I
143>timeout</I
144></TT
145>
146milliseconds trying to lock the semaphore. This function is to be avoided if
147possible since on some platforms it is implemented by polling the semaphore
148every millisecond in a busy loop.</P
149><P
150>After <TT
151CLASS="FUNCTION"
152>SDL_SemWaitTimeout()</TT
153> is successful, the semaphore
154can be released and its count atomically incremented by a successful call to
155<A
156HREF="sdlsempost.html"
157>SDL_SemPost</A
158>.</P
159></DIV
160><DIV
161CLASS="REFSECT1"
162><A
163NAME="AEN8140"
164></A
165><H2
166>Return Value</H2
167><P
168>Returns <SPAN
169CLASS="RETURNVALUE"
170>0</SPAN
171> if the semaphore was successfully locked or
172either <SPAN
173CLASS="RETURNVALUE"
174>SDL_MUTEX_TIMEDOUT</SPAN
175> or <SPAN
176CLASS="RETURNVALUE"
177>-1</SPAN
178>
179if 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
184CLASS="REFSECT1"
185><A
186NAME="AEN8147"
187></A
188><H2
189>Examples</H2
190><P
191><PRE
192CLASS="PROGRAMLISTING"
193>res = SDL_SemWaitTimeout(my_sem, WAIT_TIMEOUT_MILLISEC);
194
195if (res == SDL_MUTEX_TIMEDOUT) {
196 return TRY_AGAIN;
197}
198if (res == -1) {
199 return WAIT_ERROR;
200}
201
202...
203
204SDL_SemPost(my_sem);</PRE
205></P
206></DIV
207><DIV
208CLASS="REFSECT1"
209><A
210NAME="AEN8151"
211></A
212><H2
213>See Also</H2
214><P
215><A
216HREF="sdlcreatesemaphore.html"
217><TT
218CLASS="FUNCTION"
219>SDL_CreateSemaphore</TT
220></A
221>,
222<A
223HREF="sdldestroysemaphore.html"
224><TT
225CLASS="FUNCTION"
226>SDL_DestroySemaphore</TT
227></A
228>,
229<A
230HREF="sdlsemwait.html"
231><TT
232CLASS="FUNCTION"
233>SDL_SemWait</TT
234></A
235>,
236<A
237HREF="sdlsemtrywait.html"
238><TT
239CLASS="FUNCTION"
240>SDL_SemTryWait</TT
241></A
242>,
243<A
244HREF="sdlsempost.html"
245><TT
246CLASS="FUNCTION"
247>SDL_SemPost</TT
248></A
249>,
250<A
251HREF="sdlsemvalue.html"
252><TT
253CLASS="FUNCTION"
254>SDL_SemValue</TT
255></A
256></P
257></DIV
258><DIV
259CLASS="NAVFOOTER"
260><HR
261ALIGN="LEFT"
262WIDTH="100%"><TABLE
263SUMMARY="Footer navigation table"
264WIDTH="100%"
265BORDER="0"
266CELLPADDING="0"
267CELLSPACING="0"
268><TR
269><TD
270WIDTH="33%"
271ALIGN="left"
272VALIGN="top"
273><A
274HREF="sdlsemtrywait.html"
275ACCESSKEY="P"
276>Prev</A
277></TD
278><TD
279WIDTH="34%"
280ALIGN="center"
281VALIGN="top"
282><A
283HREF="index.html"
284ACCESSKEY="H"
285>Home</A
286></TD
287><TD
288WIDTH="33%"
289ALIGN="right"
290VALIGN="top"
291><A
292HREF="sdlsempost.html"
293ACCESSKEY="N"
294>Next</A
295></TD
296></TR
297><TR
298><TD
299WIDTH="33%"
300ALIGN="left"
301VALIGN="top"
302>SDL_SemTryWait</TD
303><TD
304WIDTH="34%"
305ALIGN="center"
306VALIGN="top"
307><A
308HREF="thread.html"
309ACCESSKEY="U"
310>Up</A
311></TD
312><TD
313WIDTH="33%"
314ALIGN="right"
315VALIGN="top"
316>SDL_SemPost</TD
317></TR
318></TABLE
319></DIV
320></BODY
321></HTML
322>