1 <HTML 2 ><HEAD 3 ><TITLE 4 >SDL_CreateSemaphore</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_mutexV" 17 HREF="sdlmutexv.html"><LINK 18 REL="NEXT" 19 TITLE="SDL_DestroySemaphore" 20 HREF="sdldestroysemaphore.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="sdlmutexv.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="sdldestroysemaphore.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="SDLCREATESEMAPHORE" 74 ></A 75 >SDL_CreateSemaphore</H1 76 ><DIV 77 CLASS="REFNAMEDIV" 78 ><A 79 NAME="AEN7936" 80 ></A 81 ><H2 82 >Name</H2 83 >SDL_CreateSemaphore -- Creates a new semaphore and assigns an initial value to it.</DIV 84 ><DIV 85 CLASS="REFSYNOPSISDIV" 86 ><A 87 NAME="AEN7939" 88 ></A 89 ><H2 90 >Synopsis</H2 91 ><DIV 92 CLASS="FUNCSYNOPSIS" 93 ><A 94 NAME="AEN7940" 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 >SDL_sem *<B 107 CLASS="FSFUNC" 108 >SDL_CreateSemaphore</B 109 ></CODE 110 >(Uint32 initial_value);</CODE 111 ></P 112 ><P 113 ></P 114 ></DIV 115 ></DIV 116 ><DIV 117 CLASS="REFSECT1" 118 ><A 119 NAME="AEN7946" 120 ></A 121 ><H2 122 >Description</H2 123 ><P 124 ><TT 125 CLASS="FUNCTION" 126 >SDL_CreateSemaphore()</TT 127 > creates a new semaphore and 128 initializes it with the value <TT 129 CLASS="PARAMETER" 130 ><I 131 >initial_value</I 132 ></TT 133 >. 134 Each locking operation on the semaphore by 135 <A 136 HREF="sdlsemwait.html" 137 >SDL_SemWait</A 138 >, 139 <A 140 HREF="sdlsemtrywait.html" 141 >SDL_SemTryWait</A 142 > or 143 <A 144 HREF="sdlsemwaittimeout.html" 145 >SDL_SemWaitTimeout</A 146 > 147 will atomically decrement the semaphore value. The locking operation will be blocked 148 if the semaphore value is not positive (greater than zero). Each unlock operation by 149 <A 150 HREF="sdlsempost.html" 151 >SDL_SemPost</A 152 > 153 will atomically increment the semaphore value.</P 154 ></DIV 155 ><DIV 156 CLASS="REFSECT1" 157 ><A 158 NAME="AEN7955" 159 ></A 160 ><H2 161 >Return Value</H2 162 ><P 163 >Returns a pointer to an initialized semaphore or 164 <SPAN 165 CLASS="RETURNVALUE" 166 >NULL</SPAN 167 > if there was an error.</P 168 ></DIV 169 ><DIV 170 CLASS="REFSECT1" 171 ><A 172 NAME="AEN7959" 173 ></A 174 ><H2 175 >Examples</H2 176 ><P 177 ><PRE 178 CLASS="PROGRAMLISTING" 179 >SDL_sem *my_sem; 180 181 my_sem = SDL_CreateSemaphore(INITIAL_SEM_VALUE); 182 183 if (my_sem == NULL) { 184 return CREATE_SEM_FAILED; 185 }</PRE 186 ></P 187 ></DIV 188 ><DIV 189 CLASS="REFSECT1" 190 ><A 191 NAME="AEN7963" 192 ></A 193 ><H2 194 >See Also</H2 195 ><P 196 ><A 197 HREF="sdldestroysemaphore.html" 198 ><TT 199 CLASS="FUNCTION" 200 >SDL_DestroySemaphore</TT 201 ></A 202 >, 203 <A 204 HREF="sdlsemwait.html" 205 ><TT 206 CLASS="FUNCTION" 207 >SDL_SemWait</TT 208 ></A 209 >, 210 <A 211 HREF="sdlsemtrywait.html" 212 ><TT 213 CLASS="FUNCTION" 214 >SDL_SemTryWait</TT 215 ></A 216 >, 217 <A 218 HREF="sdlsemwaittimeout.html" 219 ><TT 220 CLASS="FUNCTION" 221 >SDL_SemWaitTimeout</TT 222 ></A 223 >, 224 <A 225 HREF="sdlsempost.html" 226 ><TT 227 CLASS="FUNCTION" 228 >SDL_SemPost</TT 229 ></A 230 >, 231 <A 232 HREF="sdlsemvalue.html" 233 ><TT 234 CLASS="FUNCTION" 235 >SDL_SemValue</TT 236 ></A 237 ></P 238 ></DIV 239 ><DIV 240 CLASS="NAVFOOTER" 241 ><HR 242 ALIGN="LEFT" 243 WIDTH="100%"><TABLE 244 SUMMARY="Footer navigation table" 245 WIDTH="100%" 246 BORDER="0" 247 CELLPADDING="0" 248 CELLSPACING="0" 249 ><TR 250 ><TD 251 WIDTH="33%" 252 ALIGN="left" 253 VALIGN="top" 254 ><A 255 HREF="sdlmutexv.html" 256 ACCESSKEY="P" 257 >Prev</A 258 ></TD 259 ><TD 260 WIDTH="34%" 261 ALIGN="center" 262 VALIGN="top" 263 ><A 264 HREF="index.html" 265 ACCESSKEY="H" 266 >Home</A 267 ></TD 268 ><TD 269 WIDTH="33%" 270 ALIGN="right" 271 VALIGN="top" 272 ><A 273 HREF="sdldestroysemaphore.html" 274 ACCESSKEY="N" 275 >Next</A 276 ></TD 277 ></TR 278 ><TR 279 ><TD 280 WIDTH="33%" 281 ALIGN="left" 282 VALIGN="top" 283 >SDL_mutexV</TD 284 ><TD 285 WIDTH="34%" 286 ALIGN="center" 287 VALIGN="top" 288 ><A 289 HREF="thread.html" 290 ACCESSKEY="U" 291 >Up</A 292 ></TD 293 ><TD 294 WIDTH="33%" 295 ALIGN="right" 296 VALIGN="top" 297 >SDL_DestroySemaphore</TD 298 ></TR 299 ></TABLE 300 ></DIV 301 ></BODY 302 ></HTML 303 >