0,0 → 1,314 |
<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="AEN7571" |
></A |
><H2 |
>Name</H2 |
>SDL_SemWaitTimeout -- Lock a semaphore, but only wait up to a specified maximum time.</DIV |
><DIV |
CLASS="REFSYNOPSISDIV" |
><A |
NAME="AEN7574" |
></A |
><H2 |
>Synopsis</H2 |
><DIV |
CLASS="FUNCSYNOPSIS" |
><A |
NAME="AEN7575" |
></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="AEN7581" |
></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="AEN7591" |
></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="AEN7598" |
></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="AEN7602" |
></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 |
> |