You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
319 lines
4.2 KiB
319 lines
4.2 KiB
<HTML |
|
><HEAD |
|
><TITLE |
|
>SDL_SemTryWait</TITLE |
|
><META |
|
NAME="GENERATOR" |
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ |
|
"><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_SemWait" |
|
HREF="sdlsemwait.html"><LINK |
|
REL="NEXT" |
|
TITLE="SDL_SemWaitTimeout" |
|
HREF="sdlsemwaittimeout.html"></HEAD |
|
><BODY |
|
CLASS="REFENTRY" |
|
BGCOLOR="#FFF8DC" |
|
TEXT="#000000" |
|
LINK="#0000ee" |
|
VLINK="#551a8b" |
|
ALINK="#ff0000" |
|
><DIV |
|
CLASS="NAVHEADER" |
|
><TABLE |
|
SUMMARY="Header navigation 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="sdlsemwait.html" |
|
ACCESSKEY="P" |
|
>Prev</A |
|
></TD |
|
><TD |
|
WIDTH="80%" |
|
ALIGN="center" |
|
VALIGN="bottom" |
|
></TD |
|
><TD |
|
WIDTH="10%" |
|
ALIGN="right" |
|
VALIGN="bottom" |
|
><A |
|
HREF="sdlsemwaittimeout.html" |
|
ACCESSKEY="N" |
|
>Next</A |
|
></TD |
|
></TR |
|
></TABLE |
|
><HR |
|
ALIGN="LEFT" |
|
WIDTH="100%"></DIV |
|
><H1 |
|
><A |
|
NAME="SDLSEMTRYWAIT" |
|
></A |
|
>SDL_SemTryWait</H1 |
|
><DIV |
|
CLASS="REFNAMEDIV" |
|
><A |
|
NAME="AEN8069" |
|
></A |
|
><H2 |
|
>Name</H2 |
|
>SDL_SemTryWait -- Attempt to lock a semaphore but don't suspend the thread.</DIV |
|
><DIV |
|
CLASS="REFSYNOPSISDIV" |
|
><A |
|
NAME="AEN8072" |
|
></A |
|
><H2 |
|
>Synopsis</H2 |
|
><DIV |
|
CLASS="FUNCSYNOPSIS" |
|
><A |
|
NAME="AEN8073" |
|
></A |
|
><P |
|
></P |
|
><PRE |
|
CLASS="FUNCSYNOPSISINFO" |
|
>#include "SDL.h" |
|
#include "SDL_thread.h"</PRE |
|
><P |
|
><CODE |
|
><CODE |
|
CLASS="FUNCDEF" |
|
>int <B |
|
CLASS="FSFUNC" |
|
>SDL_SemTryWait</B |
|
></CODE |
|
>(SDL_sem *sem);</CODE |
|
></P |
|
><P |
|
></P |
|
></DIV |
|
></DIV |
|
><DIV |
|
CLASS="REFSECT1" |
|
><A |
|
NAME="AEN8079" |
|
></A |
|
><H2 |
|
>Description</H2 |
|
><P |
|
><TT |
|
CLASS="FUNCTION" |
|
>SDL_SemTryWait</TT |
|
> is a non-blocking varient of |
|
<A |
|
HREF="sdlsemwait.html" |
|
><TT |
|
CLASS="FUNCTION" |
|
>SDL_SemWait</TT |
|
></A |
|
>. If the value of the semaphore |
|
pointed to by <TT |
|
CLASS="PARAMETER" |
|
><I |
|
>sem</I |
|
></TT |
|
> is positive it will atomically |
|
decrement the semaphore value and return 0, otherwise it will return |
|
<SPAN |
|
CLASS="RETURNVALUE" |
|
>SDL_MUTEX_TIMEDOUT</SPAN |
|
> instead of suspending the thread.</P |
|
><P |
|
>After <TT |
|
CLASS="FUNCTION" |
|
>SDL_SemTryWait</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="AEN8090" |
|
></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_TIMEDOUT</SPAN |
|
> or <SPAN |
|
CLASS="RETURNVALUE" |
|
>-1</SPAN |
|
> |
|
if the thread would have suspended 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="AEN8097" |
|
></A |
|
><H2 |
|
>Examples</H2 |
|
><P |
|
><PRE |
|
CLASS="PROGRAMLISTING" |
|
>res = SDL_SemTryWait(my_sem); |
|
|
|
if (res == SDL_MUTEX_TIMEDOUT) { |
|
return TRY_AGAIN; |
|
} |
|
if (res == -1) { |
|
return WAIT_ERROR; |
|
} |
|
|
|
... |
|
|
|
SDL_SemPost(my_sem);</PRE |
|
></P |
|
></DIV |
|
><DIV |
|
CLASS="REFSECT1" |
|
><A |
|
NAME="AEN8101" |
|
></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="sdlsemwaittimeout.html" |
|
><TT |
|
CLASS="FUNCTION" |
|
>SDL_SemWaitTimeout</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 |
|
SUMMARY="Footer navigation table" |
|
WIDTH="100%" |
|
BORDER="0" |
|
CELLPADDING="0" |
|
CELLSPACING="0" |
|
><TR |
|
><TD |
|
WIDTH="33%" |
|
ALIGN="left" |
|
VALIGN="top" |
|
><A |
|
HREF="sdlsemwait.html" |
|
ACCESSKEY="P" |
|
>Prev</A |
|
></TD |
|
><TD |
|
WIDTH="34%" |
|
ALIGN="center" |
|
VALIGN="top" |
|
><A |
|
HREF="index.html" |
|
ACCESSKEY="H" |
|
>Home</A |
|
></TD |
|
><TD |
|
WIDTH="33%" |
|
ALIGN="right" |
|
VALIGN="top" |
|
><A |
|
HREF="sdlsemwaittimeout.html" |
|
ACCESSKEY="N" |
|
>Next</A |
|
></TD |
|
></TR |
|
><TR |
|
><TD |
|
WIDTH="33%" |
|
ALIGN="left" |
|
VALIGN="top" |
|
>SDL_SemWait</TD |
|
><TD |
|
WIDTH="34%" |
|
ALIGN="center" |
|
VALIGN="top" |
|
><A |
|
HREF="thread.html" |
|
ACCESSKEY="U" |
|
>Up</A |
|
></TD |
|
><TD |
|
WIDTH="33%" |
|
ALIGN="right" |
|
VALIGN="top" |
|
>SDL_SemWaitTimeout</TD |
|
></TR |
|
></TABLE |
|
></DIV |
|
></BODY |
|
></HTML |
|
> |