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