Home | History | Annotate | Download | only in html
      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&nbsp;--&nbsp;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 >