Mercurial > sdl-ios-xcode
view docs/html/sdlsemwait.html @ 96:799bea5504e2
Fixed blocking open bug when using blocking audio writes
author | Sam Lantinga <slouken@lokigames.com> |
---|---|
date | Mon, 09 Jul 2001 15:46:41 +0000 |
parents | 55f1f1b3e27d |
children | e5bc29de3f0a |
line wrap: on
line source
<HTML ><HEAD ><TITLE >SDL_SemWait</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_DestroySemaphore" HREF="sdldestroysemaphore.html"><LINK REL="NEXT" TITLE="SDL_SemTryWait" HREF="sdlsemtrywait.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="sdldestroysemaphore.html" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="sdlsemtrywait.html" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="SDLSEMWAIT" >SDL_SemWait</A ></H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN7474" ></A ><H2 >Name</H2 >SDL_SemWait -- Lock a semaphore and suspend the thread if the semaphore value is zero.</DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN7477" ></A ><H2 >Synopsis</H2 ><DIV CLASS="FUNCSYNOPSIS" ><A NAME="AEN7478" ></A ><P ></P ><PRE CLASS="FUNCSYNOPSISINFO" >#include "SDL.h" #include "SDL_thread.h"</PRE ><P ><CODE ><CODE CLASS="FUNCDEF" >int <B CLASS="FSFUNC" >SDL_SemWait</B ></CODE >(SDL_sem *sem);</CODE ></P ><P ></P ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN7484" ></A ><H2 >Description</H2 ><P ><TT CLASS="FUNCTION" >SDL_SemWait()</TT > suspends the calling thread until either the semaphore pointed to by <TT CLASS="PARAMETER" ><I >sem</I ></TT > has a positive value, the call is interrupted by a signal or error. If the call is successful it will atomically decrement the semaphore value.</P ><P >After <TT CLASS="FUNCTION" >SDL_SemWait()</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="AEN7492" ></A ><H2 >Return Value</H2 ><P >Returns <SPAN CLASS="RETURNVALUE" >0</SPAN > if successful or <SPAN CLASS="RETURNVALUE" >-1</SPAN > if there was an error (leaving the semaphore unchanged).</P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN7497" ></A ><H2 >Examples</H2 ><P ><PRE CLASS="PROGRAMLISTING" >if (SDL_SemWait(my_sem) == -1) { return WAIT_FAILED; } ... SDL_SemPost(my_sem);</PRE ></P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN7501" ></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="sdlsemtrywait.html" ><TT CLASS="FUNCTION" >SDL_SemTryWait</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="sdldestroysemaphore.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="sdlsemtrywait.html" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >SDL_DestroySemaphore</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="thread.html" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >SDL_SemTryWait</TD ></TR ></TABLE ></DIV ></BODY ></HTML >