>SDL_SemWaitTimeout<
/TITLE
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.64
REL="HOME"
TITLE="SDL Library Documentation"
REL="UP"
TITLE="Multi-threaded Programming"
REL="PREVIOUS"
TITLE="SDL_SemTryWait"
HREF="sdlsemtrywait.html"><
LINK
REL="NEXT"
TITLE="SDL_SemPost"
HREF="sdlsempost.html"><
/HEAD
CLASS="REFENTRY"
BGCOLOR="#FFF8DC"
TEXT="#000000"
LINK="#0000ee"
VLINK="#551a8b"
ALINK="#ff0000"
CLASS="NAVHEADER"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
COLSPAN="3"
ALIGN="center"
>SDL Library Documentation<
/TH
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
HREF="sdlsemtrywait.html"
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
HREF="sdlsempost.html"
ALIGN="LEFT"
NAME="SDLSEMWAITTIMEOUT"
CLASS="REFNAMEDIV"
NAME="AEN7571"
>SDL_SemWaitTimeout -- Lock a semaphore, but only wait up to a specified maximum time.<
/DIV
CLASS="REFSYNOPSISDIV"
NAME="AEN7574"
CLASS="FUNCSYNOPSIS"
NAME="AEN7575"
CLASS="FUNCSYNOPSISINFO"
>#include "SDL.h"
#include
"SDL_thread.h"<
/PRE
CLASS="FUNCDEF"
CLASS="FSFUNC"
>
(SDL_sem *sem, Uint32 timeout
);<
/CODE
CLASS="REFSECT1"
NAME="AEN7581"
CLASS="FUNCTION"
>SDL_SemWaitTimeout
()<
/TT
> is a varient of
HREF="sdlsemwait.html"
>
with a maximum timeout value.
If the
value of the semaphore pointed to by <
TT
CLASS="PARAMETER"
> is
positive (greater than zero) it will atomically decrement the semaphore value
and return
0, otherwise it will wait up to <
TT
CLASS="PARAMETER"
>
milliseconds trying to lock the semaphore. This function is to be avoided if
possible since on some platforms it is implemented by polling the semaphore
every millisecond in a busy loop.<
/P
CLASS="FUNCTION"
>SDL_SemWaitTimeout
()<
/TT
> is successful, the semaphore
can be released and its count atomically incremented by a successful call to
HREF="sdlsempost.html"
CLASS="REFSECT1"
NAME="AEN7591"
CLASS="RETURNVALUE"
> if the semaphore was successfully locked or
CLASS="RETURNVALUE"
CLASS="RETURNVALUE"
>
if the timeout period was exceeded or there was an error, respectivly.<
/P
>If the semaphore was not successfully locked, the semaphore will be unchanged.<
/P
CLASS="REFSECT1"
NAME="AEN7598"
CLASS="PROGRAMLISTING"
>res = SDL_SemWaitTimeout(my_sem, WAIT_TIMEOUT_MILLISEC);
if (res == SDL_MUTEX_TIMEOUT) {
return TRY_AGAIN;
}
if (res == -1) {
return WAIT_ERROR;
}
...
SDL_SemPost
(my_sem
);<
/PRE
CLASS="REFSECT1"
NAME="AEN7602"
HREF="sdlcreatesemaphore.html"
CLASS="FUNCTION"
>,
HREF="sdldestroysemaphore.html"
CLASS="FUNCTION"
>SDL_DestroySemaphore<
/TT
>,
HREF="sdlsemwait.html"
CLASS="FUNCTION"
>,
HREF="sdlsemtrywait.html"
CLASS="FUNCTION"
>,
HREF="sdlsempost.html"
CLASS="FUNCTION"
>,
HREF="sdlsemvalue.html"
CLASS="FUNCTION"
CLASS="NAVFOOTER"
ALIGN="LEFT"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
HREF="sdlsemtrywait.html"
WIDTH="34%"
ALIGN="center"
VALIGN="top"
HREF="index.html"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
HREF="sdlsempost.html"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
WIDTH="34%"
ALIGN="center"
VALIGN="top"
HREF="thread.html"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>