symbian-qemu-0.9.1-12/libsdl-trunk/docs/html/thread.html
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 <HTML
       
     2 ><HEAD
       
     3 ><TITLE
       
     4 >Multi-threaded Programming</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="SDL Reference"
       
    14 HREF="reference.html"><LINK
       
    15 REL="PREVIOUS"
       
    16 TITLE="SDL_CDtrack"
       
    17 HREF="sdlcdtrack.html"><LINK
       
    18 REL="NEXT"
       
    19 TITLE="SDL_CreateThread"
       
    20 HREF="sdlcreatethread.html"><META
       
    21 NAME="KEYWORD"
       
    22 CONTENT="threads"><META
       
    23 NAME="KEYWORD"
       
    24 CONTENT="function"></HEAD
       
    25 ><BODY
       
    26 CLASS="CHAPTER"
       
    27 BGCOLOR="#FFF8DC"
       
    28 TEXT="#000000"
       
    29 LINK="#0000ee"
       
    30 VLINK="#551a8b"
       
    31 ALINK="#ff0000"
       
    32 ><DIV
       
    33 CLASS="NAVHEADER"
       
    34 ><TABLE
       
    35 SUMMARY="Header navigation table"
       
    36 WIDTH="100%"
       
    37 BORDER="0"
       
    38 CELLPADDING="0"
       
    39 CELLSPACING="0"
       
    40 ><TR
       
    41 ><TH
       
    42 COLSPAN="3"
       
    43 ALIGN="center"
       
    44 >SDL Library Documentation</TH
       
    45 ></TR
       
    46 ><TR
       
    47 ><TD
       
    48 WIDTH="10%"
       
    49 ALIGN="left"
       
    50 VALIGN="bottom"
       
    51 ><A
       
    52 HREF="sdlcdtrack.html"
       
    53 ACCESSKEY="P"
       
    54 >Prev</A
       
    55 ></TD
       
    56 ><TD
       
    57 WIDTH="80%"
       
    58 ALIGN="center"
       
    59 VALIGN="bottom"
       
    60 ></TD
       
    61 ><TD
       
    62 WIDTH="10%"
       
    63 ALIGN="right"
       
    64 VALIGN="bottom"
       
    65 ><A
       
    66 HREF="sdlcreatethread.html"
       
    67 ACCESSKEY="N"
       
    68 >Next</A
       
    69 ></TD
       
    70 ></TR
       
    71 ></TABLE
       
    72 ><HR
       
    73 ALIGN="LEFT"
       
    74 WIDTH="100%"></DIV
       
    75 ><DIV
       
    76 CLASS="CHAPTER"
       
    77 ><H1
       
    78 ><A
       
    79 NAME="THREAD"
       
    80 ></A
       
    81 >Chapter 12. Multi-threaded Programming</H1
       
    82 ><DIV
       
    83 CLASS="TOC"
       
    84 ><DL
       
    85 ><DT
       
    86 ><B
       
    87 >Table of Contents</B
       
    88 ></DT
       
    89 ><DT
       
    90 ><A
       
    91 HREF="sdlcreatethread.html"
       
    92 >SDL_CreateThread</A
       
    93 >&nbsp;--&nbsp;Creates a new thread of execution that shares its parent's properties.</DT
       
    94 ><DT
       
    95 ><A
       
    96 HREF="sdlthreadid.html"
       
    97 >SDL_ThreadID</A
       
    98 >&nbsp;--&nbsp;Get the 32-bit thread identifier for the current thread.</DT
       
    99 ><DT
       
   100 ><A
       
   101 HREF="sdlgetthreadid.html"
       
   102 >SDL_GetThreadID</A
       
   103 >&nbsp;--&nbsp;Get the SDL thread ID of a SDL_Thread</DT
       
   104 ><DT
       
   105 ><A
       
   106 HREF="sdlwaitthread.html"
       
   107 >SDL_WaitThread</A
       
   108 >&nbsp;--&nbsp;Wait for a thread to finish.</DT
       
   109 ><DT
       
   110 ><A
       
   111 HREF="sdlkillthread.html"
       
   112 >SDL_KillThread</A
       
   113 >&nbsp;--&nbsp;Gracelessly terminates the thread.</DT
       
   114 ><DT
       
   115 ><A
       
   116 HREF="sdlcreatemutex.html"
       
   117 >SDL_CreateMutex</A
       
   118 >&nbsp;--&nbsp;Create a mutex</DT
       
   119 ><DT
       
   120 ><A
       
   121 HREF="sdldestroymutex.html"
       
   122 >SDL_DestroyMutex</A
       
   123 >&nbsp;--&nbsp;Destroy a mutex</DT
       
   124 ><DT
       
   125 ><A
       
   126 HREF="sdlmutexp.html"
       
   127 >SDL_mutexP</A
       
   128 >&nbsp;--&nbsp;Lock a mutex</DT
       
   129 ><DT
       
   130 ><A
       
   131 HREF="sdlmutexv.html"
       
   132 >SDL_mutexV</A
       
   133 >&nbsp;--&nbsp;Unlock a mutex</DT
       
   134 ><DT
       
   135 ><A
       
   136 HREF="sdlcreatesemaphore.html"
       
   137 >SDL_CreateSemaphore</A
       
   138 >&nbsp;--&nbsp;Creates a new semaphore and assigns an initial value to it.</DT
       
   139 ><DT
       
   140 ><A
       
   141 HREF="sdldestroysemaphore.html"
       
   142 >SDL_DestroySemaphore</A
       
   143 >&nbsp;--&nbsp;Destroys a semaphore that was created by <A
       
   144 HREF="sdlcreatesemaphore.html"
       
   145 >SDL_CreateSemaphore</A
       
   146 >.</DT
       
   147 ><DT
       
   148 ><A
       
   149 HREF="sdlsemwait.html"
       
   150 >SDL_SemWait</A
       
   151 >&nbsp;--&nbsp;Lock a semaphore and suspend the thread if the semaphore value is zero.</DT
       
   152 ><DT
       
   153 ><A
       
   154 HREF="sdlsemtrywait.html"
       
   155 >SDL_SemTryWait</A
       
   156 >&nbsp;--&nbsp;Attempt to lock a semaphore but don't suspend the thread.</DT
       
   157 ><DT
       
   158 ><A
       
   159 HREF="sdlsemwaittimeout.html"
       
   160 >SDL_SemWaitTimeout</A
       
   161 >&nbsp;--&nbsp;Lock a semaphore, but only wait up to a specified maximum time.</DT
       
   162 ><DT
       
   163 ><A
       
   164 HREF="sdlsempost.html"
       
   165 >SDL_SemPost</A
       
   166 >&nbsp;--&nbsp;Unlock a semaphore.</DT
       
   167 ><DT
       
   168 ><A
       
   169 HREF="sdlsemvalue.html"
       
   170 >SDL_SemValue</A
       
   171 >&nbsp;--&nbsp;Return the current value of a semaphore.</DT
       
   172 ><DT
       
   173 ><A
       
   174 HREF="sdlcreatecond.html"
       
   175 >SDL_CreateCond</A
       
   176 >&nbsp;--&nbsp;Create a condition variable</DT
       
   177 ><DT
       
   178 ><A
       
   179 HREF="sdldestroycond.html"
       
   180 >SDL_DestroyCond</A
       
   181 >&nbsp;--&nbsp;Destroy a condition variable</DT
       
   182 ><DT
       
   183 ><A
       
   184 HREF="sdlcondsignal.html"
       
   185 >SDL_CondSignal</A
       
   186 >&nbsp;--&nbsp;Restart a thread wait on a condition variable</DT
       
   187 ><DT
       
   188 ><A
       
   189 HREF="sdlcondbroadcast.html"
       
   190 >SDL_CondBroadcast</A
       
   191 >&nbsp;--&nbsp;Restart all threads waiting on a condition variable</DT
       
   192 ><DT
       
   193 ><A
       
   194 HREF="sdlcondwait.html"
       
   195 >SDL_CondWait</A
       
   196 >&nbsp;--&nbsp;Wait on a condition variable</DT
       
   197 ><DT
       
   198 ><A
       
   199 HREF="sdlcondwaittimeout.html"
       
   200 >SDL_CondWaitTimeout</A
       
   201 >&nbsp;--&nbsp;Wait on a condition variable, with timeout</DT
       
   202 ></DL
       
   203 ></DIV
       
   204 ><P
       
   205 >SDL provides functions for creating threads, mutexes, semphores and condition variables.</P
       
   206 ><P
       
   207 >In general, you must be very aware of concurrency and data integrity issues
       
   208 when writing multi-threaded programs.  Some good guidelines include:
       
   209 <P
       
   210 ></P
       
   211 ><UL
       
   212 ><LI
       
   213 ><P
       
   214 >Don't call SDL video/event functions from separate threads</P
       
   215 ></LI
       
   216 ><LI
       
   217 ><P
       
   218 >Don't use any library functions in separate threads</P
       
   219 ></LI
       
   220 ><LI
       
   221 ><P
       
   222 >Don't perform any memory management in separate threads</P
       
   223 ></LI
       
   224 ><LI
       
   225 ><P
       
   226 >Lock global variables which may be accessed by multiple threads</P
       
   227 ></LI
       
   228 ><LI
       
   229 ><P
       
   230 >Never terminate threads, always set a flag and wait for them to quit</P
       
   231 ></LI
       
   232 ><LI
       
   233 ><P
       
   234 >Think very carefully about all possible ways your code may interact</P
       
   235 ></LI
       
   236 ></UL
       
   237 ></P
       
   238 ><DIV
       
   239 CLASS="NOTE"
       
   240 ><BLOCKQUOTE
       
   241 CLASS="NOTE"
       
   242 ><P
       
   243 ><B
       
   244 >Note: </B
       
   245 >SDL's threading is not implemented on MacOS, due to that lack of preemptive thread support (Mac OS X dos nt suffer from this problem)</P
       
   246 ></BLOCKQUOTE
       
   247 ></DIV
       
   248 ></DIV
       
   249 ><DIV
       
   250 CLASS="NAVFOOTER"
       
   251 ><HR
       
   252 ALIGN="LEFT"
       
   253 WIDTH="100%"><TABLE
       
   254 SUMMARY="Footer navigation table"
       
   255 WIDTH="100%"
       
   256 BORDER="0"
       
   257 CELLPADDING="0"
       
   258 CELLSPACING="0"
       
   259 ><TR
       
   260 ><TD
       
   261 WIDTH="33%"
       
   262 ALIGN="left"
       
   263 VALIGN="top"
       
   264 ><A
       
   265 HREF="sdlcdtrack.html"
       
   266 ACCESSKEY="P"
       
   267 >Prev</A
       
   268 ></TD
       
   269 ><TD
       
   270 WIDTH="34%"
       
   271 ALIGN="center"
       
   272 VALIGN="top"
       
   273 ><A
       
   274 HREF="index.html"
       
   275 ACCESSKEY="H"
       
   276 >Home</A
       
   277 ></TD
       
   278 ><TD
       
   279 WIDTH="33%"
       
   280 ALIGN="right"
       
   281 VALIGN="top"
       
   282 ><A
       
   283 HREF="sdlcreatethread.html"
       
   284 ACCESSKEY="N"
       
   285 >Next</A
       
   286 ></TD
       
   287 ></TR
       
   288 ><TR
       
   289 ><TD
       
   290 WIDTH="33%"
       
   291 ALIGN="left"
       
   292 VALIGN="top"
       
   293 >SDL_CDtrack</TD
       
   294 ><TD
       
   295 WIDTH="34%"
       
   296 ALIGN="center"
       
   297 VALIGN="top"
       
   298 ><A
       
   299 HREF="reference.html"
       
   300 ACCESSKEY="U"
       
   301 >Up</A
       
   302 ></TD
       
   303 ><TD
       
   304 WIDTH="33%"
       
   305 ALIGN="right"
       
   306 VALIGN="top"
       
   307 >SDL_CreateThread</TD
       
   308 ></TR
       
   309 ></TABLE
       
   310 ></DIV
       
   311 ></BODY
       
   312 ></HTML
       
   313 >