Mercurial > sdl-ios-xcode
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 > — 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 > — Get the 32-bit thread identifier for the current thread.</DT | |
96 ><DT | |
97 ><A | |
98 HREF="sdlgetthreadid.html" | |
99 >SDL_GetThreadID</A | |
100 > — Get the SDL thread ID of a SDL_Thread</DT | |
101 ><DT | |
102 ><A | |
103 HREF="sdlwaitthread.html" | |
104 >SDL_WaitThread</A | |
105 > — Wait for a thread to finish.</DT | |
106 ><DT | |
107 ><A | |
108 HREF="sdlkillthread.html" | |
109 >SDL_KillThread</A | |
110 > — Gracelessly terminates the thread.</DT | |
111 ><DT | |
112 ><A | |
113 HREF="sdlcreatemutex.html" | |
114 >SDL_CreateMutex</A | |
115 > — Create a mutex</DT | |
116 ><DT | |
117 ><A | |
118 HREF="sdldestroymutex.html" | |
119 >SDL_DestroyMutex</A | |
120 > — Destroy a mutex</DT | |
121 ><DT | |
122 ><A | |
123 HREF="sdlmutexp.html" | |
124 >SDL_mutexP</A | |
125 > — Lock a mutex</DT | |
126 ><DT | |
127 ><A | |
128 HREF="sdlmutexv.html" | |
129 >SDL_mutexV</A | |
130 > — Unlock a mutex</DT | |
131 ><DT | |
132 ><A | |
133 HREF="sdlcreatesemaphore.html" | |
134 >SDL_CreateSemaphore</A | |
135 > — 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 > — 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 > — 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 > — 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 > — 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 > — Unlock a semaphore.</DT | |
164 ><DT | |
165 ><A | |
166 HREF="sdlsemvalue.html" | |
167 >SDL_SemValue</A | |
168 > — Return the current value of a semaphore.</DT | |
169 ><DT | |
170 ><A | |
171 HREF="sdlcreatecond.html" | |
172 >SDL_CreateCond</A | |
173 > — Create a condition variable</DT | |
174 ><DT | |
175 ><A | |
176 HREF="sdldestroycond.html" | |
177 >SDL_DestroyCond</A | |
178 > — Destroy a condition variable</DT | |
179 ><DT | |
180 ><A | |
181 HREF="sdlcondsignal.html" | |
182 >SDL_CondSignal</A | |
183 > — Restart a thread wait on a condition variable</DT | |
184 ><DT | |
185 ><A | |
186 HREF="sdlcondbroadcast.html" | |
187 >SDL_CondBroadcast</A | |
188 > — Restart all threads waiting on a condition variable</DT | |
189 ><DT | |
190 ><A | |
191 HREF="sdlcondwait.html" | |
192 >SDL_CondWait</A | |
193 > — Wait on a condition variable</DT | |
194 ><DT | |
195 ><A | |
196 HREF="sdlcondwaittimeout.html" | |
197 >SDL_CondWaitTimeout</A | |
198 > — 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 > |