home *** CD-ROM | disk | FTP | other *** search
- <HTML
- ><HEAD
- ><TITLE
- >SDL_SemWaitTimeout</TITLE
- ><META
- NAME="GENERATOR"
- CONTENT="Modular DocBook HTML Stylesheet Version 1.64
- "><LINK
- REL="HOME"
- TITLE="SDL Library Documentation"
- HREF="index.html"><LINK
- REL="UP"
- TITLE="Multi-threaded Programming"
- HREF="thread.html"><LINK
- REL="PREVIOUS"
- TITLE="SDL_SemTryWait"
- HREF="sdlsemtrywait.html"><LINK
- REL="NEXT"
- TITLE="SDL_SemPost"
- HREF="sdlsempost.html"></HEAD
- ><BODY
- CLASS="REFENTRY"
- BGCOLOR="#FFF8DC"
- TEXT="#000000"
- LINK="#0000ee"
- VLINK="#551a8b"
- ALINK="#ff0000"
- ><DIV
- CLASS="NAVHEADER"
- ><TABLE
- WIDTH="100%"
- BORDER="0"
- CELLPADDING="0"
- CELLSPACING="0"
- ><TR
- ><TH
- COLSPAN="3"
- ALIGN="center"
- >SDL Library Documentation</TH
- ></TR
- ><TR
- ><TD
- WIDTH="10%"
- ALIGN="left"
- VALIGN="bottom"
- ><A
- HREF="sdlsemtrywait.html"
- >Prev</A
- ></TD
- ><TD
- WIDTH="80%"
- ALIGN="center"
- VALIGN="bottom"
- ></TD
- ><TD
- WIDTH="10%"
- ALIGN="right"
- VALIGN="bottom"
- ><A
- HREF="sdlsempost.html"
- >Next</A
- ></TD
- ></TR
- ></TABLE
- ><HR
- ALIGN="LEFT"
- WIDTH="100%"></DIV
- ><H1
- ><A
- NAME="SDLSEMWAITTIMEOUT"
- >SDL_SemWaitTimeout</A
- ></H1
- ><DIV
- CLASS="REFNAMEDIV"
- ><A
- NAME="AEN7577"
- ></A
- ><H2
- >Name</H2
- >SDL_SemWaitTimeout -- Lock a semaphore, but only wait up to a specified maximum time.</DIV
- ><DIV
- CLASS="REFSYNOPSISDIV"
- ><A
- NAME="AEN7580"
- ></A
- ><H2
- >Synopsis</H2
- ><DIV
- CLASS="FUNCSYNOPSIS"
- ><A
- NAME="AEN7581"
- ></A
- ><P
- ></P
- ><PRE
- CLASS="FUNCSYNOPSISINFO"
- >#include "SDL.h"
- #include "SDL_thread.h"</PRE
- ><P
- ><CODE
- ><CODE
- CLASS="FUNCDEF"
- >int <B
- CLASS="FSFUNC"
- >SDL_SemWaitTimeout</B
- ></CODE
- >(SDL_sem *sem, Uint32 timeout);</CODE
- ></P
- ><P
- ></P
- ></DIV
- ></DIV
- ><DIV
- CLASS="REFSECT1"
- ><A
- NAME="AEN7587"
- ></A
- ><H2
- >Description</H2
- ><P
- ><TT
- CLASS="FUNCTION"
- >SDL_SemWaitTimeout()</TT
- > is a varient of
- <A
- HREF="sdlsemwait.html"
- >SDL_SemWait</A
- >
- with a maximum timeout value.
- If the value of the semaphore pointed to by <TT
- CLASS="PARAMETER"
- ><I
- >sem</I
- ></TT
- > is
- positive (greater than zero) it will atomically decrement the semaphore value
- and return 0, otherwise it will wait up to <TT
- CLASS="PARAMETER"
- ><I
- >timeout</I
- ></TT
- >
- 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
- ><P
- >After <TT
- CLASS="FUNCTION"
- >SDL_SemWaitTimeout()</TT
- > is successful, the semaphore
- can be released and its count atomically incremented by a successful call to
- <A
- HREF="sdlsempost.html"
- >SDL_SemPost</A
- >.</P
- ></DIV
- ><DIV
- CLASS="REFSECT1"
- ><A
- NAME="AEN7597"
- ></A
- ><H2
- >Return Value</H2
- ><P
- >Returns <SPAN
- CLASS="RETURNVALUE"
- >0</SPAN
- > if the semaphore was successfully locked or
- either <SPAN
- CLASS="RETURNVALUE"
- >SDL_MUTEX_TIMEOUT</SPAN
- > or <SPAN
- CLASS="RETURNVALUE"
- >-1</SPAN
- >
- if the timeout period was exceeded or there was an error, respectivly.</P
- ><P
- >If the semaphore was not successfully locked, the semaphore will be unchanged.</P
- ></DIV
- ><DIV
- CLASS="REFSECT1"
- ><A
- NAME="AEN7604"
- ></A
- ><H2
- >Examples</H2
- ><P
- ><PRE
- 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
- ></P
- ></DIV
- ><DIV
- CLASS="REFSECT1"
- ><A
- NAME="AEN7608"
- ></A
- ><H2
- >See Also</H2
- ><P
- ><A
- HREF="sdlcreatesemaphore.html"
- ><TT
- CLASS="FUNCTION"
- >SDL_CreateSemaphore</TT
- ></A
- >,
- <A
- HREF="sdldestroysemaphore.html"
- ><TT
- CLASS="FUNCTION"
- >SDL_DestroySemaphore</TT
- ></A
- >,
- <A
- HREF="sdlsemwait.html"
- ><TT
- CLASS="FUNCTION"
- >SDL_SemWait</TT
- ></A
- >,
- <A
- HREF="sdlsemtrywait.html"
- ><TT
- CLASS="FUNCTION"
- >SDL_SemTryWait</TT
- ></A
- >,
- <A
- HREF="sdlsempost.html"
- ><TT
- CLASS="FUNCTION"
- >SDL_SemPost</TT
- ></A
- >,
- <A
- HREF="sdlsemvalue.html"
- ><TT
- CLASS="FUNCTION"
- >SDL_SemValue</TT
- ></A
- ></P
- ></DIV
- ><DIV
- CLASS="NAVFOOTER"
- ><HR
- ALIGN="LEFT"
- WIDTH="100%"><TABLE
- WIDTH="100%"
- BORDER="0"
- CELLPADDING="0"
- CELLSPACING="0"
- ><TR
- ><TD
- WIDTH="33%"
- ALIGN="left"
- VALIGN="top"
- ><A
- HREF="sdlsemtrywait.html"
- >Prev</A
- ></TD
- ><TD
- WIDTH="34%"
- ALIGN="center"
- VALIGN="top"
- ><A
- HREF="index.html"
- >Home</A
- ></TD
- ><TD
- WIDTH="33%"
- ALIGN="right"
- VALIGN="top"
- ><A
- HREF="sdlsempost.html"
- >Next</A
- ></TD
- ></TR
- ><TR
- ><TD
- WIDTH="33%"
- ALIGN="left"
- VALIGN="top"
- >SDL_SemTryWait</TD
- ><TD
- WIDTH="34%"
- ALIGN="center"
- VALIGN="top"
- ><A
- HREF="thread.html"
- >Up</A
- ></TD
- ><TD
- WIDTH="33%"
- ALIGN="right"
- VALIGN="top"
- >SDL_SemPost</TD
- ></TR
- ></TABLE
- ></DIV
- ></BODY
- ></HTML
- >