1<HTML 2><HEAD 3><TITLE 4>SDL_SemWait</TITLE 5><META 6NAME="GENERATOR" 7CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ 8"><LINK 9REL="HOME" 10TITLE="SDL Library Documentation" 11HREF="index.html"><LINK 12REL="UP" 13TITLE="Multi-threaded Programming" 14HREF="thread.html"><LINK 15REL="PREVIOUS" 16TITLE="SDL_DestroySemaphore" 17HREF="sdldestroysemaphore.html"><LINK 18REL="NEXT" 19TITLE="SDL_SemTryWait" 20HREF="sdlsemtrywait.html"></HEAD 21><BODY 22CLASS="REFENTRY" 23BGCOLOR="#FFF8DC" 24TEXT="#000000" 25LINK="#0000ee" 26VLINK="#551a8b" 27ALINK="#ff0000" 28><DIV 29CLASS="NAVHEADER" 30><TABLE 31SUMMARY="Header navigation table" 32WIDTH="100%" 33BORDER="0" 34CELLPADDING="0" 35CELLSPACING="0" 36><TR 37><TH 38COLSPAN="3" 39ALIGN="center" 40>SDL Library Documentation</TH 41></TR 42><TR 43><TD 44WIDTH="10%" 45ALIGN="left" 46VALIGN="bottom" 47><A 48HREF="sdldestroysemaphore.html" 49ACCESSKEY="P" 50>Prev</A 51></TD 52><TD 53WIDTH="80%" 54ALIGN="center" 55VALIGN="bottom" 56></TD 57><TD 58WIDTH="10%" 59ALIGN="right" 60VALIGN="bottom" 61><A 62HREF="sdlsemtrywait.html" 63ACCESSKEY="N" 64>Next</A 65></TD 66></TR 67></TABLE 68><HR 69ALIGN="LEFT" 70WIDTH="100%"></DIV 71><H1 72><A 73NAME="SDLSEMWAIT" 74></A 75>SDL_SemWait</H1 76><DIV 77CLASS="REFNAMEDIV" 78><A 79NAME="AEN8023" 80></A 81><H2 82>Name</H2 83>SDL_SemWait -- Lock a semaphore and suspend the thread if the semaphore value is zero.</DIV 84><DIV 85CLASS="REFSYNOPSISDIV" 86><A 87NAME="AEN8026" 88></A 89><H2 90>Synopsis</H2 91><DIV 92CLASS="FUNCSYNOPSIS" 93><A 94NAME="AEN8027" 95></A 96><P 97></P 98><PRE 99CLASS="FUNCSYNOPSISINFO" 100>#include "SDL.h" 101#include "SDL_thread.h"</PRE 102><P 103><CODE 104><CODE 105CLASS="FUNCDEF" 106>int <B 107CLASS="FSFUNC" 108>SDL_SemWait</B 109></CODE 110>(SDL_sem *sem);</CODE 111></P 112><P 113></P 114></DIV 115></DIV 116><DIV 117CLASS="REFSECT1" 118><A 119NAME="AEN8033" 120></A 121><H2 122>Description</H2 123><P 124><TT 125CLASS="FUNCTION" 126>SDL_SemWait()</TT 127> suspends the calling thread until either 128the semaphore pointed to by <TT 129CLASS="PARAMETER" 130><I 131>sem</I 132></TT 133> has a positive value, 134the call is interrupted by a signal or error. If the call is successful it 135will atomically decrement the semaphore value.</P 136><P 137>After <TT 138CLASS="FUNCTION" 139>SDL_SemWait()</TT 140> is successful, the semaphore 141can be released and its count atomically incremented by a successful call to 142<A 143HREF="sdlsempost.html" 144>SDL_SemPost</A 145>.</P 146></DIV 147><DIV 148CLASS="REFSECT1" 149><A 150NAME="AEN8041" 151></A 152><H2 153>Return Value</H2 154><P 155>Returns <SPAN 156CLASS="RETURNVALUE" 157>0</SPAN 158> if successful or 159<SPAN 160CLASS="RETURNVALUE" 161>-1</SPAN 162> if there was an error (leaving the semaphore unchanged).</P 163></DIV 164><DIV 165CLASS="REFSECT1" 166><A 167NAME="AEN8046" 168></A 169><H2 170>Examples</H2 171><P 172><PRE 173CLASS="PROGRAMLISTING" 174>if (SDL_SemWait(my_sem) == -1) { 175 return WAIT_FAILED; 176} 177 178... 179 180SDL_SemPost(my_sem);</PRE 181></P 182></DIV 183><DIV 184CLASS="REFSECT1" 185><A 186NAME="AEN8050" 187></A 188><H2 189>See Also</H2 190><P 191><A 192HREF="sdlcreatesemaphore.html" 193><TT 194CLASS="FUNCTION" 195>SDL_CreateSemaphore</TT 196></A 197>, 198<A 199HREF="sdldestroysemaphore.html" 200><TT 201CLASS="FUNCTION" 202>SDL_DestroySemaphore</TT 203></A 204>, 205<A 206HREF="sdlsemtrywait.html" 207><TT 208CLASS="FUNCTION" 209>SDL_SemTryWait</TT 210></A 211>, 212<A 213HREF="sdlsemwaittimeout.html" 214><TT 215CLASS="FUNCTION" 216>SDL_SemWaitTimeout</TT 217></A 218>, 219<A 220HREF="sdlsempost.html" 221><TT 222CLASS="FUNCTION" 223>SDL_SemPost</TT 224></A 225>, 226<A 227HREF="sdlsemvalue.html" 228><TT 229CLASS="FUNCTION" 230>SDL_SemValue</TT 231></A 232></P 233></DIV 234><DIV 235CLASS="NAVFOOTER" 236><HR 237ALIGN="LEFT" 238WIDTH="100%"><TABLE 239SUMMARY="Footer navigation table" 240WIDTH="100%" 241BORDER="0" 242CELLPADDING="0" 243CELLSPACING="0" 244><TR 245><TD 246WIDTH="33%" 247ALIGN="left" 248VALIGN="top" 249><A 250HREF="sdldestroysemaphore.html" 251ACCESSKEY="P" 252>Prev</A 253></TD 254><TD 255WIDTH="34%" 256ALIGN="center" 257VALIGN="top" 258><A 259HREF="index.html" 260ACCESSKEY="H" 261>Home</A 262></TD 263><TD 264WIDTH="33%" 265ALIGN="right" 266VALIGN="top" 267><A 268HREF="sdlsemtrywait.html" 269ACCESSKEY="N" 270>Next</A 271></TD 272></TR 273><TR 274><TD 275WIDTH="33%" 276ALIGN="left" 277VALIGN="top" 278>SDL_DestroySemaphore</TD 279><TD 280WIDTH="34%" 281ALIGN="center" 282VALIGN="top" 283><A 284HREF="thread.html" 285ACCESSKEY="U" 286>Up</A 287></TD 288><TD 289WIDTH="33%" 290ALIGN="right" 291VALIGN="top" 292>SDL_SemTryWait</TD 293></TR 294></TABLE 295></DIV 296></BODY 297></HTML 298>