comparison docs/html/thread.html @ 0:74212992fb08

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