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