home *** CD-ROM | disk | FTP | other *** search
- <HTML
- ><HEAD
- ><TITLE
- >SDL_SemTryWait</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_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
- 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"
- >Prev</A
- ></TD
- ><TD
- WIDTH="80%"
- ALIGN="center"
- VALIGN="bottom"
- ></TD
- ><TD
- WIDTH="10%"
- ALIGN="right"
- VALIGN="bottom"
- ><A
- HREF="sdlsemwaittimeout.html"
- >Next</A
- ></TD
- ></TR
- ></TABLE
- ><HR
- ALIGN="LEFT"
- WIDTH="100%"></DIV
- ><H1
- ><A
- NAME="SDLSEMTRYWAIT"
- >SDL_SemTryWait</A
- ></H1
- ><DIV
- CLASS="REFNAMEDIV"
- ><A
- NAME="AEN7526"
- ></A
- ><H2
- >Name</H2
- >SDL_SemTryWait -- Attempt to lock a semaphore but don't suspend the thread.</DIV
- ><DIV
- CLASS="REFSYNOPSISDIV"
- ><A
- NAME="AEN7529"
- ></A
- ><H2
- >Synopsis</H2
- ><DIV
- CLASS="FUNCSYNOPSIS"
- ><A
- NAME="AEN7530"
- ></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="AEN7536"
- ></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_TIMEOUT</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="AEN7547"
- ></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 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="AEN7554"
- ></A
- ><H2
- >Examples</H2
- ><P
- ><PRE
- CLASS="PROGRAMLISTING"
- >res = SDL_SemTryWait(my_sem);
-
- 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="AEN7558"
- ></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
- WIDTH="100%"
- BORDER="0"
- CELLPADDING="0"
- CELLSPACING="0"
- ><TR
- ><TD
- WIDTH="33%"
- ALIGN="left"
- VALIGN="top"
- ><A
- HREF="sdlsemwait.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="sdlsemwaittimeout.html"
- >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"
- >Up</A
- ></TD
- ><TD
- WIDTH="33%"
- ALIGN="right"
- VALIGN="top"
- >SDL_SemWaitTimeout</TD
- ></TR
- ></TABLE
- ></DIV
- ></BODY
- ></HTML
- >