Home | History | Annotate | Download | only in html
      1 <HTML
      2 ><HEAD
      3 ><TITLE
      4 >SDL_SemWaitTimeout</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_SemTryWait"
     17 HREF="sdlsemtrywait.html"><LINK
     18 REL="NEXT"
     19 TITLE="SDL_SemPost"
     20 HREF="sdlsempost.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="sdlsemtrywait.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="sdlsempost.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="SDLSEMWAITTIMEOUT"
     74 ></A
     75 >SDL_SemWaitTimeout</H1
     76 ><DIV
     77 CLASS="REFNAMEDIV"
     78 ><A
     79 NAME="AEN8120"
     80 ></A
     81 ><H2
     82 >Name</H2
     83 >SDL_SemWaitTimeout&nbsp;--&nbsp;Lock a semaphore, but only wait up to a specified maximum time.</DIV
     84 ><DIV
     85 CLASS="REFSYNOPSISDIV"
     86 ><A
     87 NAME="AEN8123"
     88 ></A
     89 ><H2
     90 >Synopsis</H2
     91 ><DIV
     92 CLASS="FUNCSYNOPSIS"
     93 ><A
     94 NAME="AEN8124"
     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_SemWaitTimeout</B
    109 ></CODE
    110 >(SDL_sem *sem, Uint32 timeout);</CODE
    111 ></P
    112 ><P
    113 ></P
    114 ></DIV
    115 ></DIV
    116 ><DIV
    117 CLASS="REFSECT1"
    118 ><A
    119 NAME="AEN8130"
    120 ></A
    121 ><H2
    122 >Description</H2
    123 ><P
    124 ><TT
    125 CLASS="FUNCTION"
    126 >SDL_SemWaitTimeout()</TT
    127 > is a varient of
    128 <A
    129 HREF="sdlsemwait.html"
    130 >SDL_SemWait</A
    131 >
    132 with a maximum timeout value.
    133 If the value of the semaphore pointed to by <TT
    134 CLASS="PARAMETER"
    135 ><I
    136 >sem</I
    137 ></TT
    138 > is
    139 positive (greater than zero) it will atomically decrement the semaphore value
    140 and return 0, otherwise it will wait up to <TT
    141 CLASS="PARAMETER"
    142 ><I
    143 >timeout</I
    144 ></TT
    145 >
    146 milliseconds trying to lock the semaphore. This function is to be avoided if
    147 possible since on some platforms it is implemented by polling the semaphore
    148 every millisecond in a busy loop.</P
    149 ><P
    150 >After <TT
    151 CLASS="FUNCTION"
    152 >SDL_SemWaitTimeout()</TT
    153 > is successful, the semaphore
    154 can be released and its count atomically incremented by a successful call to
    155 <A
    156 HREF="sdlsempost.html"
    157 >SDL_SemPost</A
    158 >.</P
    159 ></DIV
    160 ><DIV
    161 CLASS="REFSECT1"
    162 ><A
    163 NAME="AEN8140"
    164 ></A
    165 ><H2
    166 >Return Value</H2
    167 ><P
    168 >Returns <SPAN
    169 CLASS="RETURNVALUE"
    170 >0</SPAN
    171 > if the semaphore was successfully locked or
    172 either <SPAN
    173 CLASS="RETURNVALUE"
    174 >SDL_MUTEX_TIMEDOUT</SPAN
    175 > or <SPAN
    176 CLASS="RETURNVALUE"
    177 >-1</SPAN
    178 >
    179 if the timeout period was exceeded or there was an error, respectivly.</P
    180 ><P
    181 >If the semaphore was not successfully locked, the semaphore will be unchanged.</P
    182 ></DIV
    183 ><DIV
    184 CLASS="REFSECT1"
    185 ><A
    186 NAME="AEN8147"
    187 ></A
    188 ><H2
    189 >Examples</H2
    190 ><P
    191 ><PRE
    192 CLASS="PROGRAMLISTING"
    193 >res = SDL_SemWaitTimeout(my_sem, WAIT_TIMEOUT_MILLISEC);
    194 
    195 if (res == SDL_MUTEX_TIMEDOUT) {
    196         return TRY_AGAIN;
    197 }
    198 if (res == -1) {
    199         return WAIT_ERROR;
    200 }
    201 
    202 ...
    203 
    204 SDL_SemPost(my_sem);</PRE
    205 ></P
    206 ></DIV
    207 ><DIV
    208 CLASS="REFSECT1"
    209 ><A
    210 NAME="AEN8151"
    211 ></A
    212 ><H2
    213 >See Also</H2
    214 ><P
    215 ><A
    216 HREF="sdlcreatesemaphore.html"
    217 ><TT
    218 CLASS="FUNCTION"
    219 >SDL_CreateSemaphore</TT
    220 ></A
    221 >,
    222 <A
    223 HREF="sdldestroysemaphore.html"
    224 ><TT
    225 CLASS="FUNCTION"
    226 >SDL_DestroySemaphore</TT
    227 ></A
    228 >,
    229 <A
    230 HREF="sdlsemwait.html"
    231 ><TT
    232 CLASS="FUNCTION"
    233 >SDL_SemWait</TT
    234 ></A
    235 >,
    236 <A
    237 HREF="sdlsemtrywait.html"
    238 ><TT
    239 CLASS="FUNCTION"
    240 >SDL_SemTryWait</TT
    241 ></A
    242 >,
    243 <A
    244 HREF="sdlsempost.html"
    245 ><TT
    246 CLASS="FUNCTION"
    247 >SDL_SemPost</TT
    248 ></A
    249 >,
    250 <A
    251 HREF="sdlsemvalue.html"
    252 ><TT
    253 CLASS="FUNCTION"
    254 >SDL_SemValue</TT
    255 ></A
    256 ></P
    257 ></DIV
    258 ><DIV
    259 CLASS="NAVFOOTER"
    260 ><HR
    261 ALIGN="LEFT"
    262 WIDTH="100%"><TABLE
    263 SUMMARY="Footer navigation table"
    264 WIDTH="100%"
    265 BORDER="0"
    266 CELLPADDING="0"
    267 CELLSPACING="0"
    268 ><TR
    269 ><TD
    270 WIDTH="33%"
    271 ALIGN="left"
    272 VALIGN="top"
    273 ><A
    274 HREF="sdlsemtrywait.html"
    275 ACCESSKEY="P"
    276 >Prev</A
    277 ></TD
    278 ><TD
    279 WIDTH="34%"
    280 ALIGN="center"
    281 VALIGN="top"
    282 ><A
    283 HREF="index.html"
    284 ACCESSKEY="H"
    285 >Home</A
    286 ></TD
    287 ><TD
    288 WIDTH="33%"
    289 ALIGN="right"
    290 VALIGN="top"
    291 ><A
    292 HREF="sdlsempost.html"
    293 ACCESSKEY="N"
    294 >Next</A
    295 ></TD
    296 ></TR
    297 ><TR
    298 ><TD
    299 WIDTH="33%"
    300 ALIGN="left"
    301 VALIGN="top"
    302 >SDL_SemTryWait</TD
    303 ><TD
    304 WIDTH="34%"
    305 ALIGN="center"
    306 VALIGN="top"
    307 ><A
    308 HREF="thread.html"
    309 ACCESSKEY="U"
    310 >Up</A
    311 ></TD
    312 ><TD
    313 WIDTH="33%"
    314 ALIGN="right"
    315 VALIGN="top"
    316 >SDL_SemPost</TD
    317 ></TR
    318 ></TABLE
    319 ></DIV
    320 ></BODY
    321 ></HTML
    322 >