📄 sdlsemtrywait.html
字号:
<HTML><HEAD><TITLE>SDL_SemTryWait</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+"><LINKREL="HOME"TITLE="SDL Library Documentation"HREF="index.html"><LINKREL="UP"TITLE="Multi-threaded Programming"HREF="thread.html"><LINKREL="PREVIOUS"TITLE="SDL_SemWait"HREF="sdlsemwait.html"><LINKREL="NEXT"TITLE="SDL_SemWaitTimeout"HREF="sdlsemwaittimeout.html"></HEAD><BODYCLASS="REFENTRY"BGCOLOR="#FFF8DC"TEXT="#000000"LINK="#0000ee"VLINK="#551a8b"ALINK="#ff0000"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">SDL Library Documentation</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="sdlsemwait.html"ACCESSKEY="P">Prev</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="sdlsemwaittimeout.html"ACCESSKEY="N">Next</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><H1><ANAME="SDLSEMTRYWAIT"></A>SDL_SemTryWait</H1><DIVCLASS="REFNAMEDIV"><ANAME="AEN8069"></A><H2>Name</H2>SDL_SemTryWait -- Attempt to lock a semaphore but don't suspend the thread.</DIV><DIVCLASS="REFSYNOPSISDIV"><ANAME="AEN8072"></A><H2>Synopsis</H2><DIVCLASS="FUNCSYNOPSIS"><ANAME="AEN8073"></A><P></P><PRECLASS="FUNCSYNOPSISINFO">#include "SDL.h"#include "SDL_thread.h"</PRE><P><CODE><CODECLASS="FUNCDEF">int <BCLASS="FSFUNC">SDL_SemTryWait</B></CODE>(SDL_sem *sem);</CODE></P><P></P></DIV></DIV><DIVCLASS="REFSECT1"><ANAME="AEN8079"></A><H2>Description</H2><P><TTCLASS="FUNCTION">SDL_SemTryWait</TT> is a non-blocking varient of<AHREF="sdlsemwait.html"><TTCLASS="FUNCTION">SDL_SemWait</TT></A>. If the value of the semaphorepointed to by <TTCLASS="PARAMETER"><I>sem</I></TT> is positive it will atomicallydecrement the semaphore value and return 0, otherwise it will return<SPANCLASS="RETURNVALUE">SDL_MUTEX_TIMEDOUT</SPAN> instead of suspending the thread.</P><P>After <TTCLASS="FUNCTION">SDL_SemTryWait</TT> is successful, the semaphorecan be released and its count atomically incremented by a successful call to<AHREF="sdlsempost.html">SDL_SemPost</A>.</P></DIV><DIVCLASS="REFSECT1"><ANAME="AEN8090"></A><H2>Return Value</H2><P>Returns <SPANCLASS="RETURNVALUE">0</SPAN> if the semaphore was successfully locked oreither <SPANCLASS="RETURNVALUE">SDL_MUTEX_TIMEDOUT</SPAN> or <SPANCLASS="RETURNVALUE">-1</SPAN>if the thread would have suspended or there was an error, respectivly.</P><P>If the semaphore was not successfully locked, the semaphore will be unchanged.</P></DIV><DIVCLASS="REFSECT1"><ANAME="AEN8097"></A><H2>Examples</H2><P><PRECLASS="PROGRAMLISTING">res = SDL_SemTryWait(my_sem);if (res == SDL_MUTEX_TIMEDOUT) { return TRY_AGAIN;}if (res == -1) { return WAIT_ERROR;}...SDL_SemPost(my_sem);</PRE></P></DIV><DIVCLASS="REFSECT1"><ANAME="AEN8101"></A><H2>See Also</H2><P><AHREF="sdlcreatesemaphore.html"><TTCLASS="FUNCTION">SDL_CreateSemaphore</TT></A>,<AHREF="sdldestroysemaphore.html"><TTCLASS="FUNCTION">SDL_DestroySemaphore</TT></A>,<AHREF="sdlsemwait.html"><TTCLASS="FUNCTION">SDL_SemWait</TT></A>,<AHREF="sdlsemwaittimeout.html"><TTCLASS="FUNCTION">SDL_SemWaitTimeout</TT></A>,<AHREF="sdlsempost.html"><TTCLASS="FUNCTION">SDL_SemPost</TT></A>,<AHREF="sdlsemvalue.html"><TTCLASS="FUNCTION">SDL_SemValue</TT></A></P></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLESUMMARY="Footer navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><AHREF="sdlsemwait.html"ACCESSKEY="P">Prev</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="index.html"ACCESSKEY="H">Home</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><AHREF="sdlsemwaittimeout.html"ACCESSKEY="N">Next</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">SDL_SemWait</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="thread.html"ACCESSKEY="U">Up</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">SDL_SemWaitTimeout</TD></TR></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -