1<HTML 2><HEAD 3><TITLE 4>SDL_SemTryWait</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_SemWait" 17HREF="sdlsemwait.html"><LINK 18REL="NEXT" 19TITLE="SDL_SemWaitTimeout" 20HREF="sdlsemwaittimeout.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="sdlsemwait.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="sdlsemwaittimeout.html" 63ACCESSKEY="N" 64>Next</A 65></TD 66></TR 67></TABLE 68><HR 69ALIGN="LEFT" 70WIDTH="100%"></DIV 71><H1 72><A 73NAME="SDLSEMTRYWAIT" 74></A 75>SDL_SemTryWait</H1 76><DIV 77CLASS="REFNAMEDIV" 78><A 79NAME="AEN8069" 80></A 81><H2 82>Name</H2 83>SDL_SemTryWait -- Attempt to lock a semaphore but don't suspend the thread.</DIV 84><DIV 85CLASS="REFSYNOPSISDIV" 86><A 87NAME="AEN8072" 88></A 89><H2 90>Synopsis</H2 91><DIV 92CLASS="FUNCSYNOPSIS" 93><A 94NAME="AEN8073" 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_SemTryWait</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="AEN8079" 120></A 121><H2 122>Description</H2 123><P 124><TT 125CLASS="FUNCTION" 126>SDL_SemTryWait</TT 127> is a non-blocking varient of 128<A 129HREF="sdlsemwait.html" 130><TT 131CLASS="FUNCTION" 132>SDL_SemWait</TT 133></A 134>. If the value of the semaphore 135pointed to by <TT 136CLASS="PARAMETER" 137><I 138>sem</I 139></TT 140> is positive it will atomically 141decrement the semaphore value and return 0, otherwise it will return 142<SPAN 143CLASS="RETURNVALUE" 144>SDL_MUTEX_TIMEDOUT</SPAN 145> instead of suspending the thread.</P 146><P 147>After <TT 148CLASS="FUNCTION" 149>SDL_SemTryWait</TT 150> is successful, the semaphore 151can be released and its count atomically incremented by a successful call to 152<A 153HREF="sdlsempost.html" 154>SDL_SemPost</A 155>.</P 156></DIV 157><DIV 158CLASS="REFSECT1" 159><A 160NAME="AEN8090" 161></A 162><H2 163>Return Value</H2 164><P 165>Returns <SPAN 166CLASS="RETURNVALUE" 167>0</SPAN 168> if the semaphore was successfully locked or 169either <SPAN 170CLASS="RETURNVALUE" 171>SDL_MUTEX_TIMEDOUT</SPAN 172> or <SPAN 173CLASS="RETURNVALUE" 174>-1</SPAN 175> 176if the thread would have suspended or there was an error, respectivly.</P 177><P 178>If the semaphore was not successfully locked, the semaphore will be unchanged.</P 179></DIV 180><DIV 181CLASS="REFSECT1" 182><A 183NAME="AEN8097" 184></A 185><H2 186>Examples</H2 187><P 188><PRE 189CLASS="PROGRAMLISTING" 190>res = SDL_SemTryWait(my_sem); 191 192if (res == SDL_MUTEX_TIMEDOUT) { 193 return TRY_AGAIN; 194} 195if (res == -1) { 196 return WAIT_ERROR; 197} 198 199... 200 201SDL_SemPost(my_sem);</PRE 202></P 203></DIV 204><DIV 205CLASS="REFSECT1" 206><A 207NAME="AEN8101" 208></A 209><H2 210>See Also</H2 211><P 212><A 213HREF="sdlcreatesemaphore.html" 214><TT 215CLASS="FUNCTION" 216>SDL_CreateSemaphore</TT 217></A 218>, 219<A 220HREF="sdldestroysemaphore.html" 221><TT 222CLASS="FUNCTION" 223>SDL_DestroySemaphore</TT 224></A 225>, 226<A 227HREF="sdlsemwait.html" 228><TT 229CLASS="FUNCTION" 230>SDL_SemWait</TT 231></A 232>, 233<A 234HREF="sdlsemwaittimeout.html" 235><TT 236CLASS="FUNCTION" 237>SDL_SemWaitTimeout</TT 238></A 239>, 240<A 241HREF="sdlsempost.html" 242><TT 243CLASS="FUNCTION" 244>SDL_SemPost</TT 245></A 246>, 247<A 248HREF="sdlsemvalue.html" 249><TT 250CLASS="FUNCTION" 251>SDL_SemValue</TT 252></A 253></P 254></DIV 255><DIV 256CLASS="NAVFOOTER" 257><HR 258ALIGN="LEFT" 259WIDTH="100%"><TABLE 260SUMMARY="Footer navigation table" 261WIDTH="100%" 262BORDER="0" 263CELLPADDING="0" 264CELLSPACING="0" 265><TR 266><TD 267WIDTH="33%" 268ALIGN="left" 269VALIGN="top" 270><A 271HREF="sdlsemwait.html" 272ACCESSKEY="P" 273>Prev</A 274></TD 275><TD 276WIDTH="34%" 277ALIGN="center" 278VALIGN="top" 279><A 280HREF="index.html" 281ACCESSKEY="H" 282>Home</A 283></TD 284><TD 285WIDTH="33%" 286ALIGN="right" 287VALIGN="top" 288><A 289HREF="sdlsemwaittimeout.html" 290ACCESSKEY="N" 291>Next</A 292></TD 293></TR 294><TR 295><TD 296WIDTH="33%" 297ALIGN="left" 298VALIGN="top" 299>SDL_SemWait</TD 300><TD 301WIDTH="34%" 302ALIGN="center" 303VALIGN="top" 304><A 305HREF="thread.html" 306ACCESSKEY="U" 307>Up</A 308></TD 309><TD 310WIDTH="33%" 311ALIGN="right" 312VALIGN="top" 313>SDL_SemWaitTimeout</TD 314></TR 315></TABLE 316></DIV 317></BODY 318></HTML 319>