Skip to content

Latest commit

 

History

History
313 lines (313 loc) · 5.42 KB

thread.html

File metadata and controls

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