1 | <html xmlns:v="urn:schemas-microsoft-com:vml"
|
---|
2 | xmlns:o="urn:schemas-microsoft-com:office:office"
|
---|
3 | xmlns:w="urn:schemas-microsoft-com:office:word"
|
---|
4 | xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
|
---|
5 | xmlns="http://www.w3.org/TR/REC-html40">
|
---|
6 |
|
---|
7 | <head>
|
---|
8 | <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
|
---|
9 | <meta name=ProgId content=Word.Document>
|
---|
10 | <meta name=Generator content="Microsoft Word 12">
|
---|
11 | <meta name=Originator content="Microsoft Word 12">
|
---|
12 | <link rel=File-List
|
---|
13 | href="Symmetric%20Multiprocessing%20on%20Haiku%20_files/filelist.xml">
|
---|
14 | <link rel=Edit-Time-Data
|
---|
15 | href="Symmetric%20Multiprocessing%20on%20Haiku%20_files/editdata.mso">
|
---|
16 | <!--[if !mso]>
|
---|
17 | <style>
|
---|
18 | v\:* {behavior:url(#default#VML);}
|
---|
19 | o\:* {behavior:url(#default#VML);}
|
---|
20 | w\:* {behavior:url(#default#VML);}
|
---|
21 | .shape {behavior:url(#default#VML);}
|
---|
22 | </style>
|
---|
23 | <![endif]--><!--[if gte mso 9]><xml>
|
---|
24 | <o:DocumentProperties>
|
---|
25 | <o:Author>Andrew</o:Author>
|
---|
26 | <o:LastAuthor>Andrew</o:LastAuthor>
|
---|
27 | <o:Revision>3</o:Revision>
|
---|
28 | <o:TotalTime>489</o:TotalTime>
|
---|
29 | <o:Created>2017-04-08T13:41:00Z</o:Created>
|
---|
30 | <o:LastSaved>2017-04-08T13:45:00Z</o:LastSaved>
|
---|
31 | <o:Pages>5</o:Pages>
|
---|
32 | <o:Words>2204</o:Words>
|
---|
33 | <o:Characters>12568</o:Characters>
|
---|
34 | <o:Lines>104</o:Lines>
|
---|
35 | <o:Paragraphs>29</o:Paragraphs>
|
---|
36 | <o:CharactersWithSpaces>14743</o:CharactersWithSpaces>
|
---|
37 | <o:Version>12.00</o:Version>
|
---|
38 | </o:DocumentProperties>
|
---|
39 | </xml><![endif]-->
|
---|
40 | <link rel=dataStoreItem
|
---|
41 | href="Symmetric%20Multiprocessing%20on%20Haiku%20_files/item0010.xml"
|
---|
42 | target="Symmetric%20Multiprocessing%20on%20Haiku%20_files/props0011.xml">
|
---|
43 | <link rel=themeData
|
---|
44 | href="Symmetric%20Multiprocessing%20on%20Haiku%20_files/themedata.thmx">
|
---|
45 | <link rel=colorSchemeMapping
|
---|
46 | href="Symmetric%20Multiprocessing%20on%20Haiku%20_files/colorschememapping.xml">
|
---|
47 | <!--[if gte mso 9]><xml>
|
---|
48 | <w:WordDocument>
|
---|
49 | <w:SpellingState>Clean</w:SpellingState>
|
---|
50 | <w:GrammarState>Clean</w:GrammarState>
|
---|
51 | <w:TrackMoves>false</w:TrackMoves>
|
---|
52 | <w:TrackFormatting/>
|
---|
53 | <w:PunctuationKerning/>
|
---|
54 | <w:ValidateAgainstSchemas/>
|
---|
55 | <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
|
---|
56 | <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
|
---|
57 | <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
|
---|
58 | <w:DoNotPromoteQF/>
|
---|
59 | <w:LidThemeOther>EN-US</w:LidThemeOther>
|
---|
60 | <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
|
---|
61 | <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
|
---|
62 | <w:Compatibility>
|
---|
63 | <w:BreakWrappedTables/>
|
---|
64 | <w:SnapToGridInCell/>
|
---|
65 | <w:WrapTextWithPunct/>
|
---|
66 | <w:UseAsianBreakRules/>
|
---|
67 | <w:DontGrowAutofit/>
|
---|
68 | <w:SplitPgBreakAndParaMark/>
|
---|
69 | <w:DontVertAlignCellWithSp/>
|
---|
70 | <w:DontBreakConstrainedForcedTables/>
|
---|
71 | <w:DontVertAlignInTxbx/>
|
---|
72 | <w:Word11KerningPairs/>
|
---|
73 | <w:CachedColBalance/>
|
---|
74 | </w:Compatibility>
|
---|
75 | <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
|
---|
76 | <m:mathPr>
|
---|
77 | <m:mathFont m:val="Cambria Math"/>
|
---|
78 | <m:brkBin m:val="before"/>
|
---|
79 | <m:brkBinSub m:val="--"/>
|
---|
80 | <m:smallFrac m:val="off"/>
|
---|
81 | <m:dispDef/>
|
---|
82 | <m:lMargin m:val="0"/>
|
---|
83 | <m:rMargin m:val="0"/>
|
---|
84 | <m:defJc m:val="centerGroup"/>
|
---|
85 | <m:wrapIndent m:val="1440"/>
|
---|
86 | <m:intLim m:val="subSup"/>
|
---|
87 | <m:naryLim m:val="undOvr"/>
|
---|
88 | </m:mathPr></w:WordDocument>
|
---|
89 | </xml><![endif]--><!--[if gte mso 9]><xml>
|
---|
90 | <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
|
---|
91 | DefSemiHidden="true" DefQFormat="false" DefPriority="99"
|
---|
92 | LatentStyleCount="267">
|
---|
93 | <w:LsdException Locked="false" Priority="0" SemiHidden="false"
|
---|
94 | UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
|
---|
95 | <w:LsdException Locked="false" Priority="9" SemiHidden="false"
|
---|
96 | UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
|
---|
97 | <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
|
---|
98 | <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
|
---|
99 | <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
|
---|
100 | <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
|
---|
101 | <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
|
---|
102 | <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
|
---|
103 | <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
|
---|
104 | <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
|
---|
105 | <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
|
---|
106 | <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
|
---|
107 | <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
|
---|
108 | <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
|
---|
109 | <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
|
---|
110 | <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
|
---|
111 | <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
|
---|
112 | <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
|
---|
113 | <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
|
---|
114 | <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
|
---|
115 | <w:LsdException Locked="false" Priority="10" SemiHidden="false"
|
---|
116 | UnhideWhenUsed="false" QFormat="true" Name="Title"/>
|
---|
117 | <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
|
---|
118 | <w:LsdException Locked="false" Priority="11" SemiHidden="false"
|
---|
119 | UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
|
---|
120 | <w:LsdException Locked="false" Priority="22" SemiHidden="false"
|
---|
121 | UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
|
---|
122 | <w:LsdException Locked="false" Priority="20" SemiHidden="false"
|
---|
123 | UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
|
---|
124 | <w:LsdException Locked="false" Priority="59" SemiHidden="false"
|
---|
125 | UnhideWhenUsed="false" Name="Table Grid"/>
|
---|
126 | <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
|
---|
127 | <w:LsdException Locked="false" Priority="1" SemiHidden="false"
|
---|
128 | UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
|
---|
129 | <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
---|
130 | UnhideWhenUsed="false" Name="Light Shading"/>
|
---|
131 | <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
---|
132 | UnhideWhenUsed="false" Name="Light List"/>
|
---|
133 | <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
---|
134 | UnhideWhenUsed="false" Name="Light Grid"/>
|
---|
135 | <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
---|
136 | UnhideWhenUsed="false" Name="Medium Shading 1"/>
|
---|
137 | <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
---|
138 | UnhideWhenUsed="false" Name="Medium Shading 2"/>
|
---|
139 | <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
---|
140 | UnhideWhenUsed="false" Name="Medium List 1"/>
|
---|
141 | <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
---|
142 | UnhideWhenUsed="false" Name="Medium List 2"/>
|
---|
143 | <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
---|
144 | UnhideWhenUsed="false" Name="Medium Grid 1"/>
|
---|
145 | <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
---|
146 | UnhideWhenUsed="false" Name="Medium Grid 2"/>
|
---|
147 | <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
---|
148 | UnhideWhenUsed="false" Name="Medium Grid 3"/>
|
---|
149 | <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
---|
150 | UnhideWhenUsed="false" Name="Dark List"/>
|
---|
151 | <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
---|
152 | UnhideWhenUsed="false" Name="Colorful Shading"/>
|
---|
153 | <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
---|
154 | UnhideWhenUsed="false" Name="Colorful List"/>
|
---|
155 | <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
---|
156 | UnhideWhenUsed="false" Name="Colorful Grid"/>
|
---|
157 | <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
---|
158 | UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
|
---|
159 | <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
---|
160 | UnhideWhenUsed="false" Name="Light List Accent 1"/>
|
---|
161 | <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
---|
162 | UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
|
---|
163 | <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
---|
164 | UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
|
---|
165 | <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
---|
166 | UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
|
---|
167 | <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
---|
168 | UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
|
---|
169 | <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
|
---|
170 | <w:LsdException Locked="false" Priority="34" SemiHidden="false"
|
---|
171 | UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
|
---|
172 | <w:LsdException Locked="false" Priority="29" SemiHidden="false"
|
---|
173 | UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
|
---|
174 | <w:LsdException Locked="false" Priority="30" SemiHidden="false"
|
---|
175 | UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
|
---|
176 | <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
---|
177 | UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
|
---|
178 | <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
---|
179 | UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
|
---|
180 | <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
---|
181 | UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
|
---|
182 | <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
---|
183 | UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
|
---|
184 | <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
---|
185 | UnhideWhenUsed="false" Name="Dark List Accent 1"/>
|
---|
186 | <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
---|
187 | UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
|
---|
188 | <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
---|
189 | UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
|
---|
190 | <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
---|
191 | UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
|
---|
192 | <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
---|
193 | UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
|
---|
194 | <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
---|
195 | UnhideWhenUsed="false" Name="Light List Accent 2"/>
|
---|
196 | <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
---|
197 | UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
|
---|
198 | <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
---|
199 | UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
|
---|
200 | <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
---|
201 | UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
|
---|
202 | <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
---|
203 | UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
|
---|
204 | <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
---|
205 | UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
|
---|
206 | <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
---|
207 | UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
|
---|
208 | <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
---|
209 | UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
|
---|
210 | <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
---|
211 | UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
|
---|
212 | <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
---|
213 | UnhideWhenUsed="false" Name="Dark List Accent 2"/>
|
---|
214 | <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
---|
215 | UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
|
---|
216 | <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
---|
217 | UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
|
---|
218 | <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
---|
219 | UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
|
---|
220 | <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
---|
221 | UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
|
---|
222 | <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
---|
223 | UnhideWhenUsed="false" Name="Light List Accent 3"/>
|
---|
224 | <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
---|
225 | UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
|
---|
226 | <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
---|
227 | UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
|
---|
228 | <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
---|
229 | UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
|
---|
230 | <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
---|
231 | UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
|
---|
232 | <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
---|
233 | UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
|
---|
234 | <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
---|
235 | UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
|
---|
236 | <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
---|
237 | UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
|
---|
238 | <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
---|
239 | UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
|
---|
240 | <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
---|
241 | UnhideWhenUsed="false" Name="Dark List Accent 3"/>
|
---|
242 | <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
---|
243 | UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
|
---|
244 | <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
---|
245 | UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
|
---|
246 | <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
---|
247 | UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
|
---|
248 | <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
---|
249 | UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
|
---|
250 | <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
---|
251 | UnhideWhenUsed="false" Name="Light List Accent 4"/>
|
---|
252 | <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
---|
253 | UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
|
---|
254 | <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
---|
255 | UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
|
---|
256 | <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
---|
257 | UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
|
---|
258 | <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
---|
259 | UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
|
---|
260 | <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
---|
261 | UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
|
---|
262 | <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
---|
263 | UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
|
---|
264 | <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
---|
265 | UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
|
---|
266 | <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
---|
267 | UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
|
---|
268 | <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
---|
269 | UnhideWhenUsed="false" Name="Dark List Accent 4"/>
|
---|
270 | <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
---|
271 | UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
|
---|
272 | <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
---|
273 | UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
|
---|
274 | <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
---|
275 | UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
|
---|
276 | <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
---|
277 | UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
|
---|
278 | <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
---|
279 | UnhideWhenUsed="false" Name="Light List Accent 5"/>
|
---|
280 | <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
---|
281 | UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
|
---|
282 | <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
---|
283 | UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
|
---|
284 | <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
---|
285 | UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
|
---|
286 | <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
---|
287 | UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
|
---|
288 | <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
---|
289 | UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
|
---|
290 | <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
---|
291 | UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
|
---|
292 | <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
---|
293 | UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
|
---|
294 | <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
---|
295 | UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
|
---|
296 | <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
---|
297 | UnhideWhenUsed="false" Name="Dark List Accent 5"/>
|
---|
298 | <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
---|
299 | UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
|
---|
300 | <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
---|
301 | UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
|
---|
302 | <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
---|
303 | UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
|
---|
304 | <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
---|
305 | UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
|
---|
306 | <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
---|
307 | UnhideWhenUsed="false" Name="Light List Accent 6"/>
|
---|
308 | <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
---|
309 | UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
|
---|
310 | <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
---|
311 | UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
|
---|
312 | <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
---|
313 | UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
|
---|
314 | <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
---|
315 | UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
|
---|
316 | <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
---|
317 | UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
|
---|
318 | <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
---|
319 | UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
|
---|
320 | <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
---|
321 | UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
|
---|
322 | <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
---|
323 | UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
|
---|
324 | <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
---|
325 | UnhideWhenUsed="false" Name="Dark List Accent 6"/>
|
---|
326 | <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
---|
327 | UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
|
---|
328 | <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
---|
329 | UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
|
---|
330 | <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
---|
331 | UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
|
---|
332 | <w:LsdException Locked="false" Priority="19" SemiHidden="false"
|
---|
333 | UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
|
---|
334 | <w:LsdException Locked="false" Priority="21" SemiHidden="false"
|
---|
335 | UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
|
---|
336 | <w:LsdException Locked="false" Priority="31" SemiHidden="false"
|
---|
337 | UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
|
---|
338 | <w:LsdException Locked="false" Priority="32" SemiHidden="false"
|
---|
339 | UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
|
---|
340 | <w:LsdException Locked="false" Priority="33" SemiHidden="false"
|
---|
341 | UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
|
---|
342 | <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
|
---|
343 | <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
|
---|
344 | </w:LatentStyles>
|
---|
345 | </xml><![endif]-->
|
---|
346 | <style>
|
---|
347 | <!--
|
---|
348 | /* Font Definitions */
|
---|
349 | @font-face
|
---|
350 | {font-family:"Cambria Math";
|
---|
351 | panose-1:2 4 5 3 5 4 6 3 2 4;
|
---|
352 | mso-font-charset:0;
|
---|
353 | mso-generic-font-family:roman;
|
---|
354 | mso-font-pitch:variable;
|
---|
355 | mso-font-signature:-536870145 1107305727 0 0 415 0;}
|
---|
356 | @font-face
|
---|
357 | {font-family:Cambria;
|
---|
358 | panose-1:2 4 5 3 5 4 6 3 2 4;
|
---|
359 | mso-font-charset:0;
|
---|
360 | mso-generic-font-family:roman;
|
---|
361 | mso-font-pitch:variable;
|
---|
362 | mso-font-signature:-536870145 1073743103 0 0 415 0;}
|
---|
363 | @font-face
|
---|
364 | {font-family:Calibri;
|
---|
365 | panose-1:2 15 5 2 2 2 4 3 2 4;
|
---|
366 | mso-font-charset:0;
|
---|
367 | mso-generic-font-family:swiss;
|
---|
368 | mso-font-pitch:variable;
|
---|
369 | mso-font-signature:-536859905 -1073732485 9 0 511 0;}
|
---|
370 | @font-face
|
---|
371 | {font-family:Tahoma;
|
---|
372 | panose-1:2 11 6 4 3 5 4 4 2 4;
|
---|
373 | mso-font-charset:0;
|
---|
374 | mso-generic-font-family:swiss;
|
---|
375 | mso-font-pitch:variable;
|
---|
376 | mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
|
---|
377 | /* Style Definitions */
|
---|
378 | p.MsoNormal, li.MsoNormal, div.MsoNormal
|
---|
379 | {mso-style-unhide:no;
|
---|
380 | mso-style-qformat:yes;
|
---|
381 | mso-style-parent:"";
|
---|
382 | margin-top:0in;
|
---|
383 | margin-right:0in;
|
---|
384 | margin-bottom:10.0pt;
|
---|
385 | margin-left:0in;
|
---|
386 | line-height:115%;
|
---|
387 | mso-pagination:widow-orphan;
|
---|
388 | font-size:11.0pt;
|
---|
389 | font-family:"Calibri","sans-serif";
|
---|
390 | mso-ascii-font-family:Calibri;
|
---|
391 | mso-ascii-theme-font:minor-latin;
|
---|
392 | mso-fareast-font-family:Calibri;
|
---|
393 | mso-fareast-theme-font:minor-latin;
|
---|
394 | mso-hansi-font-family:Calibri;
|
---|
395 | mso-hansi-theme-font:minor-latin;
|
---|
396 | mso-bidi-font-family:"Times New Roman";
|
---|
397 | mso-bidi-theme-font:minor-bidi;}
|
---|
398 | h1
|
---|
399 | {mso-style-priority:9;
|
---|
400 | mso-style-unhide:no;
|
---|
401 | mso-style-qformat:yes;
|
---|
402 | mso-style-link:"Heading 1 Char";
|
---|
403 | mso-style-next:Normal;
|
---|
404 | margin-top:24.0pt;
|
---|
405 | margin-right:0in;
|
---|
406 | margin-bottom:0in;
|
---|
407 | margin-left:0in;
|
---|
408 | margin-bottom:.0001pt;
|
---|
409 | line-height:115%;
|
---|
410 | mso-pagination:widow-orphan lines-together;
|
---|
411 | page-break-after:avoid;
|
---|
412 | mso-outline-level:1;
|
---|
413 | font-size:14.0pt;
|
---|
414 | font-family:"Cambria","serif";
|
---|
415 | mso-ascii-font-family:Cambria;
|
---|
416 | mso-ascii-theme-font:major-latin;
|
---|
417 | mso-fareast-font-family:"Times New Roman";
|
---|
418 | mso-fareast-theme-font:major-fareast;
|
---|
419 | mso-hansi-font-family:Cambria;
|
---|
420 | mso-hansi-theme-font:major-latin;
|
---|
421 | mso-bidi-font-family:"Times New Roman";
|
---|
422 | mso-bidi-theme-font:major-bidi;
|
---|
423 | color:#365F91;
|
---|
424 | mso-themecolor:accent1;
|
---|
425 | mso-themeshade:191;
|
---|
426 | mso-font-kerning:0pt;}
|
---|
427 | p.MsoTitle, li.MsoTitle, div.MsoTitle
|
---|
428 | {mso-style-priority:10;
|
---|
429 | mso-style-unhide:no;
|
---|
430 | mso-style-qformat:yes;
|
---|
431 | mso-style-link:"Title Char";
|
---|
432 | mso-style-next:Normal;
|
---|
433 | margin-top:0in;
|
---|
434 | margin-right:0in;
|
---|
435 | margin-bottom:15.0pt;
|
---|
436 | margin-left:0in;
|
---|
437 | mso-add-space:auto;
|
---|
438 | mso-pagination:widow-orphan;
|
---|
439 | border:none;
|
---|
440 | mso-border-bottom-alt:solid #4F81BD 1.0pt;
|
---|
441 | mso-border-bottom-themecolor:accent1;
|
---|
442 | padding:0in;
|
---|
443 | mso-padding-alt:0in 0in 4.0pt 0in;
|
---|
444 | font-size:26.0pt;
|
---|
445 | font-family:"Cambria","serif";
|
---|
446 | mso-ascii-font-family:Cambria;
|
---|
447 | mso-ascii-theme-font:major-latin;
|
---|
448 | mso-fareast-font-family:"Times New Roman";
|
---|
449 | mso-fareast-theme-font:major-fareast;
|
---|
450 | mso-hansi-font-family:Cambria;
|
---|
451 | mso-hansi-theme-font:major-latin;
|
---|
452 | mso-bidi-font-family:"Times New Roman";
|
---|
453 | mso-bidi-theme-font:major-bidi;
|
---|
454 | color:#17365D;
|
---|
455 | mso-themecolor:text2;
|
---|
456 | mso-themeshade:191;
|
---|
457 | letter-spacing:.25pt;
|
---|
458 | mso-font-kerning:14.0pt;}
|
---|
459 | p.MsoTitleCxSpFirst, li.MsoTitleCxSpFirst, div.MsoTitleCxSpFirst
|
---|
460 | {mso-style-priority:10;
|
---|
461 | mso-style-unhide:no;
|
---|
462 | mso-style-qformat:yes;
|
---|
463 | mso-style-link:"Title Char";
|
---|
464 | mso-style-next:Normal;
|
---|
465 | mso-style-type:export-only;
|
---|
466 | margin:0in;
|
---|
467 | margin-bottom:.0001pt;
|
---|
468 | mso-add-space:auto;
|
---|
469 | mso-pagination:widow-orphan;
|
---|
470 | border:none;
|
---|
471 | mso-border-bottom-alt:solid #4F81BD 1.0pt;
|
---|
472 | mso-border-bottom-themecolor:accent1;
|
---|
473 | padding:0in;
|
---|
474 | mso-padding-alt:0in 0in 4.0pt 0in;
|
---|
475 | font-size:26.0pt;
|
---|
476 | font-family:"Cambria","serif";
|
---|
477 | mso-ascii-font-family:Cambria;
|
---|
478 | mso-ascii-theme-font:major-latin;
|
---|
479 | mso-fareast-font-family:"Times New Roman";
|
---|
480 | mso-fareast-theme-font:major-fareast;
|
---|
481 | mso-hansi-font-family:Cambria;
|
---|
482 | mso-hansi-theme-font:major-latin;
|
---|
483 | mso-bidi-font-family:"Times New Roman";
|
---|
484 | mso-bidi-theme-font:major-bidi;
|
---|
485 | color:#17365D;
|
---|
486 | mso-themecolor:text2;
|
---|
487 | mso-themeshade:191;
|
---|
488 | letter-spacing:.25pt;
|
---|
489 | mso-font-kerning:14.0pt;}
|
---|
490 | p.MsoTitleCxSpMiddle, li.MsoTitleCxSpMiddle, div.MsoTitleCxSpMiddle
|
---|
491 | {mso-style-priority:10;
|
---|
492 | mso-style-unhide:no;
|
---|
493 | mso-style-qformat:yes;
|
---|
494 | mso-style-link:"Title Char";
|
---|
495 | mso-style-next:Normal;
|
---|
496 | mso-style-type:export-only;
|
---|
497 | margin:0in;
|
---|
498 | margin-bottom:.0001pt;
|
---|
499 | mso-add-space:auto;
|
---|
500 | mso-pagination:widow-orphan;
|
---|
501 | border:none;
|
---|
502 | mso-border-bottom-alt:solid #4F81BD 1.0pt;
|
---|
503 | mso-border-bottom-themecolor:accent1;
|
---|
504 | padding:0in;
|
---|
505 | mso-padding-alt:0in 0in 4.0pt 0in;
|
---|
506 | font-size:26.0pt;
|
---|
507 | font-family:"Cambria","serif";
|
---|
508 | mso-ascii-font-family:Cambria;
|
---|
509 | mso-ascii-theme-font:major-latin;
|
---|
510 | mso-fareast-font-family:"Times New Roman";
|
---|
511 | mso-fareast-theme-font:major-fareast;
|
---|
512 | mso-hansi-font-family:Cambria;
|
---|
513 | mso-hansi-theme-font:major-latin;
|
---|
514 | mso-bidi-font-family:"Times New Roman";
|
---|
515 | mso-bidi-theme-font:major-bidi;
|
---|
516 | color:#17365D;
|
---|
517 | mso-themecolor:text2;
|
---|
518 | mso-themeshade:191;
|
---|
519 | letter-spacing:.25pt;
|
---|
520 | mso-font-kerning:14.0pt;}
|
---|
521 | p.MsoTitleCxSpLast, li.MsoTitleCxSpLast, div.MsoTitleCxSpLast
|
---|
522 | {mso-style-priority:10;
|
---|
523 | mso-style-unhide:no;
|
---|
524 | mso-style-qformat:yes;
|
---|
525 | mso-style-link:"Title Char";
|
---|
526 | mso-style-next:Normal;
|
---|
527 | mso-style-type:export-only;
|
---|
528 | margin-top:0in;
|
---|
529 | margin-right:0in;
|
---|
530 | margin-bottom:15.0pt;
|
---|
531 | margin-left:0in;
|
---|
532 | mso-add-space:auto;
|
---|
533 | mso-pagination:widow-orphan;
|
---|
534 | border:none;
|
---|
535 | mso-border-bottom-alt:solid #4F81BD 1.0pt;
|
---|
536 | mso-border-bottom-themecolor:accent1;
|
---|
537 | padding:0in;
|
---|
538 | mso-padding-alt:0in 0in 4.0pt 0in;
|
---|
539 | font-size:26.0pt;
|
---|
540 | font-family:"Cambria","serif";
|
---|
541 | mso-ascii-font-family:Cambria;
|
---|
542 | mso-ascii-theme-font:major-latin;
|
---|
543 | mso-fareast-font-family:"Times New Roman";
|
---|
544 | mso-fareast-theme-font:major-fareast;
|
---|
545 | mso-hansi-font-family:Cambria;
|
---|
546 | mso-hansi-theme-font:major-latin;
|
---|
547 | mso-bidi-font-family:"Times New Roman";
|
---|
548 | mso-bidi-theme-font:major-bidi;
|
---|
549 | color:#17365D;
|
---|
550 | mso-themecolor:text2;
|
---|
551 | mso-themeshade:191;
|
---|
552 | letter-spacing:.25pt;
|
---|
553 | mso-font-kerning:14.0pt;}
|
---|
554 | a:link, span.MsoHyperlink
|
---|
555 | {mso-style-priority:99;
|
---|
556 | color:blue;
|
---|
557 | mso-themecolor:hyperlink;
|
---|
558 | text-decoration:underline;
|
---|
559 | text-underline:single;}
|
---|
560 | a:visited, span.MsoHyperlinkFollowed
|
---|
561 | {mso-style-noshow:yes;
|
---|
562 | mso-style-priority:99;
|
---|
563 | color:purple;
|
---|
564 | mso-themecolor:followedhyperlink;
|
---|
565 | text-decoration:underline;
|
---|
566 | text-underline:single;}
|
---|
567 | code
|
---|
568 | {mso-style-noshow:yes;
|
---|
569 | mso-style-priority:99;
|
---|
570 | font-family:"Courier New";
|
---|
571 | mso-ascii-font-family:"Courier New";
|
---|
572 | mso-fareast-font-family:"Times New Roman";
|
---|
573 | mso-hansi-font-family:"Courier New";
|
---|
574 | mso-bidi-font-family:"Courier New";}
|
---|
575 | pre
|
---|
576 | {mso-style-noshow:yes;
|
---|
577 | mso-style-priority:99;
|
---|
578 | mso-style-link:"HTML Preformatted Char";
|
---|
579 | margin:0in;
|
---|
580 | margin-bottom:.0001pt;
|
---|
581 | mso-pagination:widow-orphan;
|
---|
582 | font-size:10.0pt;
|
---|
583 | font-family:"Courier New";
|
---|
584 | mso-fareast-font-family:"Times New Roman";}
|
---|
585 | p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
|
---|
586 | {mso-style-noshow:yes;
|
---|
587 | mso-style-priority:99;
|
---|
588 | mso-style-link:"Balloon Text Char";
|
---|
589 | margin:0in;
|
---|
590 | margin-bottom:.0001pt;
|
---|
591 | mso-pagination:widow-orphan;
|
---|
592 | font-size:8.0pt;
|
---|
593 | font-family:"Tahoma","sans-serif";
|
---|
594 | mso-fareast-font-family:Calibri;
|
---|
595 | mso-fareast-theme-font:minor-latin;}
|
---|
596 | span.MsoBookTitle
|
---|
597 | {mso-style-priority:33;
|
---|
598 | mso-style-unhide:no;
|
---|
599 | mso-style-qformat:yes;
|
---|
600 | font-variant:small-caps;
|
---|
601 | letter-spacing:.25pt;
|
---|
602 | font-weight:bold;}
|
---|
603 | span.Heading1Char
|
---|
604 | {mso-style-name:"Heading 1 Char";
|
---|
605 | mso-style-priority:9;
|
---|
606 | mso-style-unhide:no;
|
---|
607 | mso-style-locked:yes;
|
---|
608 | mso-style-link:"Heading 1";
|
---|
609 | mso-ansi-font-size:14.0pt;
|
---|
610 | mso-bidi-font-size:14.0pt;
|
---|
611 | font-family:"Cambria","serif";
|
---|
612 | mso-ascii-font-family:Cambria;
|
---|
613 | mso-ascii-theme-font:major-latin;
|
---|
614 | mso-fareast-font-family:"Times New Roman";
|
---|
615 | mso-fareast-theme-font:major-fareast;
|
---|
616 | mso-hansi-font-family:Cambria;
|
---|
617 | mso-hansi-theme-font:major-latin;
|
---|
618 | mso-bidi-font-family:"Times New Roman";
|
---|
619 | mso-bidi-theme-font:major-bidi;
|
---|
620 | color:#365F91;
|
---|
621 | mso-themecolor:accent1;
|
---|
622 | mso-themeshade:191;
|
---|
623 | font-weight:bold;}
|
---|
624 | span.HTMLPreformattedChar
|
---|
625 | {mso-style-name:"HTML Preformatted Char";
|
---|
626 | mso-style-noshow:yes;
|
---|
627 | mso-style-priority:99;
|
---|
628 | mso-style-unhide:no;
|
---|
629 | mso-style-locked:yes;
|
---|
630 | mso-style-link:"HTML Preformatted";
|
---|
631 | mso-ansi-font-size:10.0pt;
|
---|
632 | mso-bidi-font-size:10.0pt;
|
---|
633 | font-family:"Courier New";
|
---|
634 | mso-ascii-font-family:"Courier New";
|
---|
635 | mso-fareast-font-family:"Times New Roman";
|
---|
636 | mso-hansi-font-family:"Courier New";
|
---|
637 | mso-bidi-font-family:"Courier New";}
|
---|
638 | span.TitleChar
|
---|
639 | {mso-style-name:"Title Char";
|
---|
640 | mso-style-priority:10;
|
---|
641 | mso-style-unhide:no;
|
---|
642 | mso-style-locked:yes;
|
---|
643 | mso-style-link:Title;
|
---|
644 | mso-ansi-font-size:26.0pt;
|
---|
645 | mso-bidi-font-size:26.0pt;
|
---|
646 | font-family:"Cambria","serif";
|
---|
647 | mso-ascii-font-family:Cambria;
|
---|
648 | mso-ascii-theme-font:major-latin;
|
---|
649 | mso-fareast-font-family:"Times New Roman";
|
---|
650 | mso-fareast-theme-font:major-fareast;
|
---|
651 | mso-hansi-font-family:Cambria;
|
---|
652 | mso-hansi-theme-font:major-latin;
|
---|
653 | mso-bidi-font-family:"Times New Roman";
|
---|
654 | mso-bidi-theme-font:major-bidi;
|
---|
655 | color:#17365D;
|
---|
656 | mso-themecolor:text2;
|
---|
657 | mso-themeshade:191;
|
---|
658 | letter-spacing:.25pt;
|
---|
659 | mso-font-kerning:14.0pt;}
|
---|
660 | span.BalloonTextChar
|
---|
661 | {mso-style-name:"Balloon Text Char";
|
---|
662 | mso-style-noshow:yes;
|
---|
663 | mso-style-priority:99;
|
---|
664 | mso-style-unhide:no;
|
---|
665 | mso-style-locked:yes;
|
---|
666 | mso-style-link:"Balloon Text";
|
---|
667 | mso-ansi-font-size:8.0pt;
|
---|
668 | mso-bidi-font-size:8.0pt;
|
---|
669 | font-family:"Tahoma","sans-serif";
|
---|
670 | mso-ascii-font-family:Tahoma;
|
---|
671 | mso-hansi-font-family:Tahoma;
|
---|
672 | mso-bidi-font-family:Tahoma;}
|
---|
673 | span.type
|
---|
674 | {mso-style-name:type;
|
---|
675 | mso-style-unhide:no;}
|
---|
676 | span.comment
|
---|
677 | {mso-style-name:comment;
|
---|
678 | mso-style-unhide:no;}
|
---|
679 | span.apple-converted-space
|
---|
680 | {mso-style-name:apple-converted-space;
|
---|
681 | mso-style-unhide:no;}
|
---|
682 | span.SpellE
|
---|
683 | {mso-style-name:"";
|
---|
684 | mso-spl-e:yes;}
|
---|
685 | span.GramE
|
---|
686 | {mso-style-name:"";
|
---|
687 | mso-gram-e:yes;}
|
---|
688 | .MsoChpDefault
|
---|
689 | {mso-style-type:export-only;
|
---|
690 | mso-default-props:yes;
|
---|
691 | font-size:10.0pt;
|
---|
692 | mso-ansi-font-size:10.0pt;
|
---|
693 | mso-bidi-font-size:10.0pt;
|
---|
694 | mso-ascii-font-family:Calibri;
|
---|
695 | mso-ascii-theme-font:minor-latin;
|
---|
696 | mso-fareast-font-family:Calibri;
|
---|
697 | mso-fareast-theme-font:minor-latin;
|
---|
698 | mso-hansi-font-family:Calibri;
|
---|
699 | mso-hansi-theme-font:minor-latin;
|
---|
700 | mso-bidi-font-family:"Times New Roman";
|
---|
701 | mso-bidi-theme-font:minor-bidi;}
|
---|
702 | @page WordSection1
|
---|
703 | {size:8.5in 11.0in;
|
---|
704 | margin:1.0in 1.0in 1.0in 1.0in;
|
---|
705 | mso-header-margin:.5in;
|
---|
706 | mso-footer-margin:.5in;
|
---|
707 | mso-paper-source:0;}
|
---|
708 | div.WordSection1
|
---|
709 | {page:WordSection1;}
|
---|
710 | -->
|
---|
711 | </style>
|
---|
712 | <!--[if gte mso 10]>
|
---|
713 | <style>
|
---|
714 | /* Style Definitions */
|
---|
715 | table.MsoNormalTable
|
---|
716 | {mso-style-name:"Table Normal";
|
---|
717 | mso-tstyle-rowband-size:0;
|
---|
718 | mso-tstyle-colband-size:0;
|
---|
719 | mso-style-noshow:yes;
|
---|
720 | mso-style-priority:99;
|
---|
721 | mso-style-qformat:yes;
|
---|
722 | mso-style-parent:"";
|
---|
723 | mso-padding-alt:0in 5.4pt 0in 5.4pt;
|
---|
724 | mso-para-margin:0in;
|
---|
725 | mso-para-margin-bottom:.0001pt;
|
---|
726 | mso-pagination:widow-orphan;
|
---|
727 | font-size:10.0pt;
|
---|
728 | font-family:"Calibri","sans-serif";
|
---|
729 | mso-ascii-font-family:Calibri;
|
---|
730 | mso-ascii-theme-font:minor-latin;
|
---|
731 | mso-hansi-font-family:Calibri;
|
---|
732 | mso-hansi-theme-font:minor-latin;
|
---|
733 | mso-bidi-font-family:"Times New Roman";
|
---|
734 | mso-bidi-theme-font:minor-bidi;}
|
---|
735 | </style>
|
---|
736 | <![endif]--><!--[if gte mso 9]><xml>
|
---|
737 | <o:shapedefaults v:ext="edit" spidmax="6146"/>
|
---|
738 | </xml><![endif]--><!--[if gte mso 9]><xml>
|
---|
739 | <o:shapelayout v:ext="edit">
|
---|
740 | <o:idmap v:ext="edit" data="1"/>
|
---|
741 | </o:shapelayout></xml><![endif]-->
|
---|
742 | </head>
|
---|
743 |
|
---|
744 | <body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
|
---|
745 |
|
---|
746 | <div class=WordSection1>
|
---|
747 |
|
---|
748 | <div style='mso-element:para-border-div;border:none;border-bottom:solid #4F81BD 1.0pt;
|
---|
749 | mso-border-bottom-themecolor:accent1;padding:0in 0in 4.0pt 0in'>
|
---|
750 |
|
---|
751 | <p class=MsoTitle>Symmetric Multi-Processing on Haiku A Programming Example</p>
|
---|
752 |
|
---|
753 | </div>
|
---|
754 |
|
---|
755 | <p class=MsoNormal>By Andrew Hudson</p>
|
---|
756 |
|
---|
757 | <h1>Multiple Threads and Multiple Cores </h1>
|
---|
758 |
|
---|
759 | <p class=MsoNormal>BeOS and Haiku were designed from the start to run multiple
|
---|
760 | threads on multiple cores.<span style='mso-spacerun:yes'> </span>The BeOS
|
---|
761 | application framework was designed to run multiple threads from its inception
|
---|
762 | and the first workstation that ran BeOS had 2 processors.<span
|
---|
763 | style='mso-spacerun:yes'> </span>Some 20 years after BeOS was first released
|
---|
764 | PCs with multiple cores are now common place, but applications are still
|
---|
765 | struggling to effectively make use of extra cores.<span
|
---|
766 | style='mso-spacerun:yes'> </span>This article will explore one coding
|
---|
767 | technique that allows you to easily use all cores.</p>
|
---|
768 |
|
---|
769 | <p class=MsoNormal>First of all, what is a thread? Wikipedia defines a thread
|
---|
770 | as, <span style='font-size:10.5pt;line-height:115%;font-family:"Arial","sans-serif";
|
---|
771 | color:#252525;background:white'>the smallest sequence of programmed instructions
|
---|
772 | that can be managed independently by a<span class=apple-converted-space> </span></span><span
|
---|
773 | style='font-size:10.5pt;line-height:115%;font-family:"Arial","sans-serif";
|
---|
774 | background:white'>scheduler</span>.<span style='mso-spacerun:yes'> </span>One
|
---|
775 | or more threads can run within a process. A process is the basis for
|
---|
776 | multi-tasking and time-sharing. A process has a context or process state, which
|
---|
777 | consists of all the <span class=GramE>CPU</span> registers, the code, the data,
|
---|
778 | the call stack, open files, etc.<span style='mso-spacerun:yes'> </span>Threads
|
---|
779 | run within a process and share process resources such as variables, memory, <span
|
---|
780 | class=GramE>open</span> files.<span style='mso-spacerun:yes'> </span></p>
|
---|
781 |
|
---|
782 | <p class=MsoNormal>Threads are useful for managing I/O. Why <span class=GramE>have
|
---|
783 | your whole application process</span> lock up while waiting for input from a
|
---|
784 | device or a user?<span style='mso-spacerun:yes'> </span>Threads in Haiku make
|
---|
785 | the user interface very responsive, even when the system is under load. </p>
|
---|
786 |
|
---|
787 | <h1>Thread Functions</h1>
|
---|
788 |
|
---|
789 | <p class=MsoNormal>Threads under Haiku can be explicitly created, controlled,
|
---|
790 | and deleted with a variety of functions:</p>
|
---|
791 |
|
---|
792 | <p class=MsoNormal><span class=SpellE>spawn_<span class=GramE>thread</span></span><span
|
---|
793 | class=GramE>(</span>) spawn a new thread</p>
|
---|
794 |
|
---|
795 | <p class=MsoNormal><span class=SpellE>find_<span class=GramE>thread</span></span><span
|
---|
796 | class=GramE>(</span>) look for a thread using its name</p>
|
---|
797 |
|
---|
798 | <p class=MsoNormal><span class=SpellE>get_thread_<span class=GramE>info</span></span><span
|
---|
799 | class=GramE>(</span>) retrieve info on a thread</p>
|
---|
800 |
|
---|
801 | <p class=MsoNormal><span class=SpellE>resume_<span class=GramE>thread</span></span><span
|
---|
802 | class=GramE>(</span>) start a thread and return to process, thread runs
|
---|
803 | asynchronously</p>
|
---|
804 |
|
---|
805 | <p class=MsoNormal><span class=SpellE>wait_for_<span class=GramE>thread</span></span><span
|
---|
806 | class=GramE>(</span>) start a thread and wait for it to complete, thread runs
|
---|
807 | synchronously</p>
|
---|
808 |
|
---|
809 | <p class=MsoNormal><span class=GramE>snooze(</span>) put a thread to sleep
|
---|
810 | for a time</p>
|
---|
811 |
|
---|
812 | <p class=MsoNormal><span class=SpellE>suspend_<span class=GramE>thread</span></span><span
|
---|
813 | class=GramE>(</span>) suspend execution of a thread</p>
|
---|
814 |
|
---|
815 | <p class=MsoNormal><span class=SpellE>exit_<span class=GramE>thread</span></span><span
|
---|
816 | class=GramE>(</span>) kill the calling thread</p>
|
---|
817 |
|
---|
818 | <p class=MsoNormal><span style='mso-spacerun:yes'> </span><span class=SpellE>kill_<span
|
---|
819 | class=GramE>thread</span></span><span class=GramE>(</span>) kill some other
|
---|
820 | thread</p>
|
---|
821 |
|
---|
822 | <p class=MsoNormal><span class=GramE>Additional<span style='mso-spacerun:yes'>
|
---|
823 | </span>functions</span> can be found in the <a
|
---|
824 | href="https://www.haiku-os.org/legacy-docs/bebook/TheKernelKit_ThreadsAndTeams_Overview.html"><span
|
---|
825 | class=SpellE>BeBook</span></a>. </p>
|
---|
826 |
|
---|
827 | <h1>The Challenges of Thread Programming</h1>
|
---|
828 |
|
---|
829 | <p class=MsoNormal>Usually programming with threads means very careful
|
---|
830 | attention to a whole variety of issues. Synchronization, race conditions,
|
---|
831 | deadlocks, variables going out of scope, <span class=GramE>are</span> just some
|
---|
832 | of the many things that can cause bugs. Multi-threaded programming bugs can be
|
---|
833 | very subtle. A program might run fine on your development system, but become
|
---|
834 | intermittently erratic on another PC.<span style='mso-spacerun:yes'> </span>Or
|
---|
835 | it might run fine 19 out of 20 times, and deliver an incorrect result once out
|
---|
836 | of 20 runs.<span style='mso-spacerun:yes'> </span>Multi-threaded programs can
|
---|
837 | also be difficult to debug because the debugger can alter the threading state,
|
---|
838 | changing the conditions that caused the bug. Fortunately, few of these
|
---|
839 | conditions apply to this example. </p>
|
---|
840 |
|
---|
841 | <h1>Haikus New Scheduler</h1>
|
---|
842 |
|
---|
843 | <p class=MsoNormal>In February of 2014, Haiku updated its scheduler. Up to that
|
---|
844 | point, BeOS and Haiku had been limited to a maximum of 8 cores. The new
|
---|
845 | scheduler allows you can use up to 64 cores. As someone interested in graphics,
|
---|
846 | multiple cores, and Haiku, I thought it would be fun to write a Haiku
|
---|
847 | application that would use multiple cores and create some fun graphics. This
|
---|
848 | was the start of <span class=SpellE>BeTracer</span>, a ray tracer using
|
---|
849 | symmetric multi-processing.</p>
|
---|
850 |
|
---|
851 | <h1>Using an Old Technique - Mandelbrot</h1>
|
---|
852 |
|
---|
853 | <p class=MsoNormal>Mandelbrot is a nice demo that ships with Haiku and nicely
|
---|
854 | shows off symmetrical multi-processing for 2 cores. If you havent tried it
|
---|
855 | recently, watch carefully the next time you run it. You will notice that the
|
---|
856 | screen updates two separate rows at a time. Mandelbrot uses a simple technique
|
---|
857 | for multiple threads. It does this by duplicating the same rendering code into
|
---|
858 | two functions, and calls one for even lines and the other for odd lines. </p>
|
---|
859 |
|
---|
860 | <div style='mso-element:para-border-div;border:solid #D5D5D5 1.0pt;mso-border-alt:
|
---|
861 | solid #D5D5D5 .75pt;padding:6.0pt 6.0pt 6.0pt 6.0pt;background:#FAFAFA;
|
---|
862 | margin-left:24.0pt;margin-right:24.0pt'>
|
---|
863 |
|
---|
864 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
865 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
866 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
867 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
868 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
869 |
|
---|
870 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
871 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
872 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
873 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span class=GramE><span
|
---|
874 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
875 | color:black'>void</span></span><span style='font-size:10.0pt;font-family:"Courier New";
|
---|
876 | mso-fareast-font-family:"Times New Roman";color:black'> <span class=SpellE>TShowBit</span>::<span
|
---|
877 | class=SpellE>mand</span>(double <span class=SpellE>vx</span>, double <span
|
---|
878 | class=SpellE>vy</span>, double <span class=SpellE>sx</span>, double <span
|
---|
879 | class=SpellE>sy</span>)<o:p></o:p></span></p>
|
---|
880 |
|
---|
881 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
882 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
883 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
884 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
885 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'>{<o:p></o:p></span></p>
|
---|
886 |
|
---|
887 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
888 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
889 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
890 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
891 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
892 | style='mso-tab-count:1'> </span><span class=SpellE><span class=GramE>vvx</span></span>
|
---|
893 | = <span class=SpellE>vx</span>; <span class=SpellE>vvy</span> = <span
|
---|
894 | class=SpellE>vy</span>; <span class=SpellE>ssx</span> = <span class=SpellE>sx</span>;<o:p></o:p></span></p>
|
---|
895 |
|
---|
896 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
897 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
898 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
899 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
900 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
901 | style='mso-tab-count:1'> </span>t1_done = 0; t2_done = 0;<o:p></o:p></span></p>
|
---|
902 |
|
---|
903 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
904 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
905 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
906 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
907 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
908 |
|
---|
909 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
910 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
911 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
912 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
913 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
914 | style='mso-tab-count:1'> </span><span class=SpellE><span class=GramE>precompute</span></span><span
|
---|
915 | class=GramE>(</span><span class=SpellE>vx</span>, <span class=SpellE>vy</span>,
|
---|
916 | <span class=SpellE>sx</span>, <span class=SpellE>sy</span>);<o:p></o:p></span></p>
|
---|
917 |
|
---|
918 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
919 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
920 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
921 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
922 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
923 | style='mso-tab-count:1'> </span><o:p></o:p></span></p>
|
---|
924 |
|
---|
925 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
926 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
927 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
928 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
929 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
930 | style='mso-tab-count:1'> </span><span class=SpellE>resume_<span class=GramE>thread</span></span><span
|
---|
931 | class=GramE>(</span><span class=SpellE>spawn_thread</span>(__calc1,
|
---|
932 | "calc1", B_NORMAL_PRIORITY, NULL));<o:p></o:p></span></p>
|
---|
933 |
|
---|
934 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
935 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
936 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
937 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
938 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
939 | style='mso-tab-count:1'> </span><span class=SpellE>resume_<span class=GramE>thread</span></span><span
|
---|
940 | class=GramE>(</span><span class=SpellE>spawn_thread</span>(__calc2,
|
---|
941 | "calc2", B_NORMAL_PRIORITY, NULL));<o:p></o:p></span></p>
|
---|
942 |
|
---|
943 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
944 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
945 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
946 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
947 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
948 | style='mso-tab-count:1'> </span><span class=GramE>busy</span> = TRUE;<o:p></o:p></span></p>
|
---|
949 |
|
---|
950 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
951 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
952 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
953 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
954 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'>}<o:p></o:p></span></p>
|
---|
955 |
|
---|
956 | </div>
|
---|
957 |
|
---|
958 | <p class=MsoNormal>__calc1 and __calc2 are pointers to functions that are
|
---|
959 | identical. Line for line they are the same code. </p>
|
---|
960 |
|
---|
961 | <p class=MsoNormal>The result is that the Mandelbrot demo runs twice as fast
|
---|
962 | when you have 2 cores. The downside is that to support additional cores, you
|
---|
963 | have to duplicate the rendering code that many more times. As an exercise I
|
---|
964 | rewrote the demo to use 4 functions and use 4 cores. It did work, but it does
|
---|
965 | not scale well and it is not elegant. Its not how the professionals do
|
---|
966 | rendering.</p>
|
---|
967 |
|
---|
968 | <h1>Using a BeOS Pattern </h1>
|
---|
969 |
|
---|
970 | <p class=MsoNormal>Haiku is a great platform to learn programming. There are a
|
---|
971 | lot of great programming resources to be found with a quick search. I highly
|
---|
972 | recommend browsing through the old Be Newsletters, and looking through the old
|
---|
973 | BeOS sample code. There are plenty of code samples with explanations by the
|
---|
974 | original BeOS team. While browsing through the old Be Newsletters, I came
|
---|
975 | across a bare-bones C++ class that would launch multiple threads. When I read
|
---|
976 | it, a light bulb went off in my head. This was what I needed to implement
|
---|
977 | symmetric multi-processing code.</p>
|
---|
978 |
|
---|
979 | <p class=MsoNormal>The class is called <span class=SpellE>ThreadPrimitive</span>
|
---|
980 | and it packs a lot into one class:</p>
|
---|
981 |
|
---|
982 | <div style='mso-element:para-border-div;border:solid #D5D5D5 1.0pt;mso-border-alt:
|
---|
983 | solid #D5D5D5 .75pt;padding:6.0pt 6.0pt 6.0pt 6.0pt;background:#FAFAFA;
|
---|
984 | margin-left:24.0pt;margin-right:24.0pt'>
|
---|
985 |
|
---|
986 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
987 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
988 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
989 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span class=GramE><span
|
---|
990 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
991 | color:black'>class</span></span><span style='font-size:10.0pt;font-family:"Courier New";
|
---|
992 | mso-fareast-font-family:"Times New Roman";color:black'> </span><span
|
---|
993 | class=SpellE><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
---|
994 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:darkgreen'>ThreadPrimitive</span></span><span
|
---|
995 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
996 | color:black'> {<o:p></o:p></span></p>
|
---|
997 |
|
---|
998 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
999 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1000 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1001 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span class=GramE><span
|
---|
1002 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1003 | color:black'>public</span></span><span style='font-size:10.0pt;font-family:
|
---|
1004 | "Courier New";mso-fareast-font-family:"Times New Roman";color:black'>:<o:p></o:p></span></p>
|
---|
1005 |
|
---|
1006 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1007 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1008 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1009 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1010 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1011 |
|
---|
1012 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1013 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1014 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1015 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1016 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1017 | style='mso-spacerun:yes'> </span></span><span class=SpellE><span class=GramE><span
|
---|
1018 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1019 | mso-fareast-font-family:"Times New Roman";color:purple'>ThreadPrimitive</span></span></span><span
|
---|
1020 | class=GramE><span style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:
|
---|
1021 | "Times New Roman";color:black'>(</span></span><span style='font-size:10.0pt;
|
---|
1022 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:#5C5F05'>int32</span><span
|
---|
1023 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1024 | color:black'> </span><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
---|
1025 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:#991122'>priority</span><span
|
---|
1026 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1027 | color:black'> = </span><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
---|
1028 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:blue'>B_LOW_PRIORITY</span><span
|
---|
1029 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1030 | color:black'>, </span><span style='font-size:10.0pt;font-family:"Courier New";
|
---|
1031 | mso-fareast-font-family:"Times New Roman";color:#5C5F05'>const char *</span><span
|
---|
1032 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1033 | mso-fareast-font-family:"Times New Roman";color:#991122'>name</span><span
|
---|
1034 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1035 | color:black'> = 0):<span style='mso-spacerun:yes'> </span></span><span
|
---|
1036 | class=SpellE><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
---|
1037 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:navy'>scanThread</span></span><span
|
---|
1038 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1039 | color:black'>(-1), </span><span style='font-size:10.0pt;mso-bidi-font-size:
|
---|
1040 | 11.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1041 | color:navy'>priority</span><span style='font-size:10.0pt;font-family:"Courier New";
|
---|
1042 | mso-fareast-font-family:"Times New Roman";color:black'>(</span><span
|
---|
1043 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1044 | mso-fareast-font-family:"Times New Roman";color:#991122'>priority</span><span
|
---|
1045 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1046 | color:black'>), </span><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
---|
1047 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:navy'>name</span><span
|
---|
1048 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1049 | color:black'>(</span><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
---|
1050 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:#991122'>name</span><span
|
---|
1051 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1052 | color:black'>)<o:p></o:p></span></p>
|
---|
1053 |
|
---|
1054 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1055 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1056 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1057 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1058 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1059 | style='mso-spacerun:yes'> </span>{<o:p></o:p></span></p>
|
---|
1060 |
|
---|
1061 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1062 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1063 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1064 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1065 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1066 | style='mso-tab-count:1'> </span>}<o:p></o:p></span></p>
|
---|
1067 |
|
---|
1068 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1069 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1070 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1071 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1072 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1073 |
|
---|
1074 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1075 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1076 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1077 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1078 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1079 | style='mso-spacerun:yes'> </span><span class=GramE>virtual</span> </span><span
|
---|
1080 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1081 | mso-fareast-font-family:"Times New Roman";color:purple'>~<span class=SpellE>ThreadPrimitive</span></span><span
|
---|
1082 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1083 | color:black'>(){<o:p></o:p></span></p>
|
---|
1084 |
|
---|
1085 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1086 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1087 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1088 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1089 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1090 | style='mso-spacerun:yes'> </span><span class=GramE>if</span> (</span><span
|
---|
1091 | class=SpellE><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
---|
1092 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:navy'>scanThread</span></span><span
|
---|
1093 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1094 | color:black'> > 0) {<o:p></o:p></span></p>
|
---|
1095 |
|
---|
1096 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1097 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1098 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1099 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1100 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1101 | style='mso-spacerun:yes'> </span></span><span class=SpellE><span
|
---|
1102 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1103 | mso-fareast-font-family:"Times New Roman";color:teal'>kill_<span class=GramE>thread</span></span></span><span
|
---|
1104 | class=GramE><span style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:
|
---|
1105 | "Times New Roman";color:black'>(</span></span><span class=SpellE><span
|
---|
1106 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1107 | mso-fareast-font-family:"Times New Roman";color:navy'>scanThread</span></span><span
|
---|
1108 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1109 | color:black'>);<o:p></o:p></span></p>
|
---|
1110 |
|
---|
1111 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1112 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1113 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1114 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1115 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1116 | style='mso-spacerun:yes'> </span><span class=GramE>ASSERT(</span>!"<span
|
---|
1117 | class=GramE>should</span> not be here");<o:p></o:p></span></p>
|
---|
1118 |
|
---|
1119 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1120 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1121 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1122 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1123 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1124 | style='mso-spacerun:yes'> </span>}<o:p></o:p></span></p>
|
---|
1125 |
|
---|
1126 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1127 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1128 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1129 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1130 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1131 | style='mso-spacerun:yes'> </span>}<o:p></o:p></span></p>
|
---|
1132 |
|
---|
1133 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1134 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1135 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1136 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1137 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1138 |
|
---|
1139 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1140 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1141 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1142 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1143 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1144 | style='mso-spacerun:yes'> </span></span><span class=GramE><span
|
---|
1145 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1146 | color:#5C5F05'>void</span></span><span style='font-size:10.0pt;font-family:
|
---|
1147 | "Courier New";mso-fareast-font-family:"Times New Roman";color:black'> </span><span
|
---|
1148 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1149 | mso-fareast-font-family:"Times New Roman";color:purple'>Go</span><span
|
---|
1150 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1151 | color:black'>()<o:p></o:p></span></p>
|
---|
1152 |
|
---|
1153 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1154 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1155 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1156 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1157 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1158 | style='mso-spacerun:yes'> </span>{<o:p></o:p></span></p>
|
---|
1159 |
|
---|
1160 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1161 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1162 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1163 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1164 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1165 | style='mso-spacerun:yes'> </span></span><span class=SpellE><span
|
---|
1166 | class=GramE><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:
|
---|
1167 | "Courier New";mso-fareast-font-family:"Times New Roman";color:navy'>scanThread</span></span></span><span
|
---|
1168 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1169 | color:black'> = </span><span class=SpellE><span style='font-size:10.0pt;
|
---|
1170 | mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
|
---|
1171 | "Times New Roman";color:teal'>spawn_thread</span></span><span style='font-size:
|
---|
1172 | 10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1173 | color:black'>(&</span><span class=SpellE><span style='font-size:10.0pt;
|
---|
1174 | mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
|
---|
1175 | "Times New Roman";color:darkgreen'>ThreadPrimitive</span></span><span
|
---|
1176 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1177 | color:black'>::</span><span class=SpellE><span style='font-size:10.0pt;
|
---|
1178 | mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
|
---|
1179 | "Times New Roman";color:purple'>RunBinder</span></span><span style='font-size:
|
---|
1180 | 10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1181 | color:black'>,<o:p></o:p></span></p>
|
---|
1182 |
|
---|
1183 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1184 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1185 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1186 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1187 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1188 | style='mso-spacerun:yes'> </span></span><span class=GramE><span
|
---|
1189 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1190 | mso-fareast-font-family:"Times New Roman";color:navy'>name</span><span
|
---|
1191 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1192 | color:black'> ?</span></span><span style='font-size:10.0pt;font-family:"Courier New";
|
---|
1193 | mso-fareast-font-family:"Times New Roman";color:black'> </span><span
|
---|
1194 | class=GramE><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:
|
---|
1195 | "Courier New";mso-fareast-font-family:"Times New Roman";color:navy'>name</span><span
|
---|
1196 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1197 | color:black'> :</span></span><span style='font-size:10.0pt;font-family:"Courier New";
|
---|
1198 | mso-fareast-font-family:"Times New Roman";color:black'> "<span
|
---|
1199 | class=SpellE>UntitledThread</span>", </span><span style='font-size:10.0pt;
|
---|
1200 | mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
|
---|
1201 | "Times New Roman";color:navy'>priority</span><span style='font-size:10.0pt;
|
---|
1202 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'>,
|
---|
1203 | </span><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:
|
---|
1204 | "Courier New";mso-fareast-font-family:"Times New Roman";color:navy'>this</span><span
|
---|
1205 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1206 | color:black'>);<o:p></o:p></span></p>
|
---|
1207 |
|
---|
1208 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1209 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1210 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1211 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1212 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1213 | style='mso-spacerun:yes'> </span></span><span class=SpellE><span
|
---|
1214 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1215 | mso-fareast-font-family:"Times New Roman";color:teal'>resume_<span class=GramE>thread</span></span></span><span
|
---|
1216 | class=GramE><span style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:
|
---|
1217 | "Times New Roman";color:black'>(</span></span><span class=SpellE><span
|
---|
1218 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1219 | mso-fareast-font-family:"Times New Roman";color:navy'>scanThread</span></span><span
|
---|
1220 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1221 | color:black'>);<o:p></o:p></span></p>
|
---|
1222 |
|
---|
1223 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1224 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1225 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1226 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1227 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1228 | style='mso-spacerun:yes'> </span>}<o:p></o:p></span></p>
|
---|
1229 |
|
---|
1230 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1231 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1232 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1233 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1234 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1235 |
|
---|
1236 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1237 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1238 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1239 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1240 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1241 | style='mso-spacerun:yes'> </span><span class=GramE>virtual</span> </span><span
|
---|
1242 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1243 | color:#5C5F05'>void</span><span style='font-size:10.0pt;font-family:"Courier New";
|
---|
1244 | mso-fareast-font-family:"Times New Roman";color:black'> </span><span
|
---|
1245 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1246 | mso-fareast-font-family:"Times New Roman";color:purple'>Run</span><span
|
---|
1247 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1248 | color:black'>() = 0;<o:p></o:p></span></p>
|
---|
1249 |
|
---|
1250 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1251 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1252 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1253 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1254 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1255 |
|
---|
1256 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1257 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1258 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1259 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span class=GramE><span
|
---|
1260 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1261 | color:black'>private</span></span><span style='font-size:10.0pt;font-family:
|
---|
1262 | "Courier New";mso-fareast-font-family:"Times New Roman";color:black'>:<o:p></o:p></span></p>
|
---|
1263 |
|
---|
1264 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1265 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1266 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1267 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1268 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1269 |
|
---|
1270 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1271 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1272 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1273 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1274 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1275 | style='mso-spacerun:yes'> </span><span class=GramE>static</span> </span><span
|
---|
1276 | class=SpellE><span style='font-size:10.0pt;font-family:"Courier New";
|
---|
1277 | mso-fareast-font-family:"Times New Roman";color:#5C5F05'>status_t</span></span><span
|
---|
1278 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1279 | color:black'> </span><span class=SpellE><span style='font-size:10.0pt;
|
---|
1280 | mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
|
---|
1281 | "Times New Roman";color:purple'>RunBinder</span></span><span style='font-size:
|
---|
1282 | 10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1283 | color:black'>(</span><span style='font-size:10.0pt;font-family:"Courier New";
|
---|
1284 | mso-fareast-font-family:"Times New Roman";color:#5C5F05'>void *</span><span
|
---|
1285 | class=SpellE><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
---|
1286 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:#991122'>castToThis</span></span><span
|
---|
1287 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1288 | color:black'>)<o:p></o:p></span></p>
|
---|
1289 |
|
---|
1290 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1291 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1292 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1293 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1294 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1295 | style='mso-spacerun:yes'> </span>{<o:p></o:p></span></p>
|
---|
1296 |
|
---|
1297 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1298 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1299 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1300 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1301 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1302 | style='mso-spacerun:yes'> </span></span><span style='font-size:10.0pt;
|
---|
1303 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:green'>//
|
---|
1304 | <span class=GramE>In</span> this call we do the dirty casting work, making</span><span
|
---|
1305 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1306 | color:black'><o:p></o:p></span></p>
|
---|
1307 |
|
---|
1308 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1309 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1310 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1311 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1312 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1313 | style='mso-spacerun:yes'> </span></span><span style='font-size:10.0pt;
|
---|
1314 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:green'>//
|
---|
1315 | the rest of the interfaces fully typed and clean</span><span style='font-size:
|
---|
1316 | 10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1317 | color:black'><o:p></o:p></span></p>
|
---|
1318 |
|
---|
1319 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1320 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1321 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1322 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1323 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1324 |
|
---|
1325 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1326 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1327 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1328 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1329 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1330 | style='mso-spacerun:yes'> </span></span><span class=SpellE><span
|
---|
1331 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1332 | mso-fareast-font-family:"Times New Roman";color:darkgreen'>ThreadPrimitive</span></span><span
|
---|
1333 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1334 | color:#5C5F05'> *</span><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
---|
1335 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:navy'>self</span><span
|
---|
1336 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1337 | color:black'> = (</span><span class=SpellE><span style='font-size:10.0pt;
|
---|
1338 | mso-bidi-font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
|
---|
1339 | "Times New Roman";color:darkgreen'>ThreadPrimitive</span></span><span
|
---|
1340 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1341 | color:#5C5F05'> *</span><span class=GramE><span style='font-size:10.0pt;
|
---|
1342 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'>)</span><span
|
---|
1343 | class=SpellE><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
---|
1344 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:#991122'>castToThis</span></span></span><span
|
---|
1345 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1346 | color:black'>;<o:p></o:p></span></p>
|
---|
1347 |
|
---|
1348 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1349 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1350 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1351 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1352 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1353 | style='mso-spacerun:yes'> </span></span><span class=GramE><span
|
---|
1354 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1355 | mso-fareast-font-family:"Times New Roman";color:navy'>self</span></span><span
|
---|
1356 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1357 | color:black'>-></span><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
---|
1358 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:purple'>Run</span><span
|
---|
1359 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1360 | color:black'>();<o:p></o:p></span></p>
|
---|
1361 |
|
---|
1362 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1363 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1364 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1365 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1366 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1367 |
|
---|
1368 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1369 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1370 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1371 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1372 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1373 | style='mso-spacerun:yes'> </span><span class=GramE>return</span> </span><span
|
---|
1374 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1375 | mso-fareast-font-family:"Times New Roman";color:blue'>B_OK</span><span
|
---|
1376 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1377 | color:black'>;<o:p></o:p></span></p>
|
---|
1378 |
|
---|
1379 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1380 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1381 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1382 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1383 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1384 | style='mso-spacerun:yes'> </span>}<o:p></o:p></span></p>
|
---|
1385 |
|
---|
1386 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1387 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1388 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1389 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1390 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1391 |
|
---|
1392 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1393 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1394 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1395 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span class=GramE><span
|
---|
1396 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1397 | color:black'>protected</span></span><span style='font-size:10.0pt;font-family:
|
---|
1398 | "Courier New";mso-fareast-font-family:"Times New Roman";color:black'>:<o:p></o:p></span></p>
|
---|
1399 |
|
---|
1400 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1401 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1402 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1403 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1404 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1405 | style='mso-spacerun:yes'> </span></span><span class=SpellE><span class=GramE><span
|
---|
1406 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1407 | color:#5C5F05'>thread_id</span></span></span><span style='font-size:10.0pt;
|
---|
1408 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'>
|
---|
1409 | </span><span class=SpellE><span style='font-size:10.0pt;mso-bidi-font-size:
|
---|
1410 | 11.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1411 | color:navy'>scanThread</span></span><span style='font-size:10.0pt;font-family:
|
---|
1412 | "Courier New";mso-fareast-font-family:"Times New Roman";color:black'>;<o:p></o:p></span></p>
|
---|
1413 |
|
---|
1414 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1415 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1416 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1417 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1418 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1419 | style='mso-spacerun:yes'> </span></span><span class=GramE><span
|
---|
1420 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1421 | color:#5C5F05'>int32</span></span><span style='font-size:10.0pt;font-family:
|
---|
1422 | "Courier New";mso-fareast-font-family:"Times New Roman";color:black'> </span><span
|
---|
1423 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1424 | mso-fareast-font-family:"Times New Roman";color:navy'>priority</span><span
|
---|
1425 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1426 | color:black'>;<o:p></o:p></span></p>
|
---|
1427 |
|
---|
1428 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1429 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1430 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1431 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1432 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1433 |
|
---|
1434 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1435 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1436 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1437 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span class=GramE><span
|
---|
1438 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1439 | color:black'>private</span></span><span style='font-size:10.0pt;font-family:
|
---|
1440 | "Courier New";mso-fareast-font-family:"Times New Roman";color:black'>:<o:p></o:p></span></p>
|
---|
1441 |
|
---|
1442 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1443 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1444 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1445 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1446 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1447 | style='mso-spacerun:yes'> </span></span><span class=GramE><span
|
---|
1448 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1449 | color:#5C5F05'>const</span></span><span style='font-size:10.0pt;font-family:
|
---|
1450 | "Courier New";mso-fareast-font-family:"Times New Roman";color:#5C5F05'> char *</span><span
|
---|
1451 | style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:"Courier New";
|
---|
1452 | mso-fareast-font-family:"Times New Roman";color:navy'>name</span><span
|
---|
1453 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1454 | color:black'>;<span style='mso-spacerun:yes'> </span></span><span
|
---|
1455 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1456 | color:green'>// only valid in the constructor and in</span><span
|
---|
1457 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1458 | color:black'><o:p></o:p></span></p>
|
---|
1459 |
|
---|
1460 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1461 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1462 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1463 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1464 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1465 | style='mso-spacerun:yes'> </span></span><span
|
---|
1466 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1467 | color:green'>// the Go call</span><span style='font-size:10.0pt;font-family:
|
---|
1468 | "Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p></o:p></span></p>
|
---|
1469 |
|
---|
1470 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1471 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1472 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1473 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1474 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'>};<o:p></o:p></span></p>
|
---|
1475 |
|
---|
1476 | </div>
|
---|
1477 |
|
---|
1478 | <p class=MsoNormal><o:p> </o:p></p>
|
---|
1479 |
|
---|
1480 | <p class=MsoNormal><span class=SpellE>ThreadPrimitive</span> is an abstract
|
---|
1481 | base class and has two important aspects. The constructor and <span
|
---|
1482 | class=GramE>Go(</span>)<span style='mso-spacerun:yes'> </span>method set up
|
---|
1483 | the thread context, and Run() is <span class=SpellE>subclassed</span> with code
|
---|
1484 | for useful work.<span style='mso-spacerun:yes'> </span>In other words, your
|
---|
1485 | code inherits from <span class=SpellE>ThreadPrimitive</span>, and your code
|
---|
1486 | goes in <span class=GramE>Run(</span>). <span style='mso-spacerun:yes'> </span><span
|
---|
1487 | class=SpellE><span class=GramE>RunBinder</span></span><span class=GramE>(</span>)
|
---|
1488 | takes Run(), casts it to a function pointer, and which is passed to the thread
|
---|
1489 | for execution. In this way you can call your own code with as many threads as
|
---|
1490 | you want with whatever parameters you need. This is what I used for the basis of
|
---|
1491 | my code. </p>
|
---|
1492 |
|
---|
1493 | <h1>Adding Threads <span class=GramE>To</span> Ray Tracing</h1>
|
---|
1494 |
|
---|
1495 | <p class=MsoNormal>Ray tracing is a very cool technique used for rendering
|
---|
1496 | photorealistic 3D scenes. It is based on an algorithm for firing off light rays
|
---|
1497 | from a source, bouncing them off 3D objects, and tracing the ray of light back
|
---|
1498 | to a point of view. It is considered to be an embarrassingly easy algorithm
|
---|
1499 | to parallelize.<span style='mso-spacerun:yes'> </span>This means it does not
|
---|
1500 | require any of the usual methods used to synchronize and control threads. Some
|
---|
1501 | of those techniques are discussed <a
|
---|
1502 | href="https://www.haiku-os.org/documents/dev/understanding_the_design_and_requirements_of_multithreaded_applications">here</a>.<span
|
---|
1503 | style='mso-spacerun:yes'> </span><span class=SpellE>Raytracing</span> was
|
---|
1504 | first made popular with the famous juggling balls demo on the Amiga.</p>
|
---|
1505 |
|
---|
1506 | <p class=MsoNormal><span style='mso-spacerun:yes'> </span>I didnt want to
|
---|
1507 | re-invent the ray tracing wheel, as it were, so I began looking at source code
|
---|
1508 | I could use for ray tracing. I looked at, ported, and discarded 5
|
---|
1509 | implementations before settling <a href="http://www.povworld.org/raytracer/">on
|
---|
1510 | Micha Risers Ray-Tracer code</a>. This was after stumbling across <span
|
---|
1511 | class=SpellE>Michas</span> long lost <a
|
---|
1512 | href="http://oxben.free.fr/povray-beos.html">BeOS implementation of POV3.1</a>.<span
|
---|
1513 | style='mso-spacerun:yes'> </span></p>
|
---|
1514 |
|
---|
1515 | <p class=MsoNormal><span class=SpellE>Michas</span> code was well-written,
|
---|
1516 | easily ported, and single threaded. The key to converting this code to multiple
|
---|
1517 | threads was to map an equal portion of each image rendering onto each thread.
|
---|
1518 | This was done by <span class=SpellE>parameterizing</span> each thread call with
|
---|
1519 | a sub class named <span class=SpellE>RenderThread</span>.<span
|
---|
1520 | style='mso-spacerun:yes'> </span><span class=SpellE>RenderThread</span> would
|
---|
1521 | know how big the image was, how many threads there were, and parcel an equal
|
---|
1522 | piece of the image to each thread. The scheduler would then run each thread on
|
---|
1523 | a separate core. The cool thing about multi-threaded ray tracing is that you
|
---|
1524 | watch each thread render its results to the screen in real time. Each
|
---|
1525 | additional processor you add means the rendering is that much faster.</p>
|
---|
1526 |
|
---|
1527 | <p class=MsoNormal><o:p> </o:p></p>
|
---|
1528 |
|
---|
1529 | <p class=MsoNormal>From MainWindow.cpp, we start a thread for each <span
|
---|
1530 | class=GramE>core,</span> pass in enough parameters for processing:</p>
|
---|
1531 |
|
---|
1532 | <div style='mso-element:para-border-div;border:solid #D5D5D5 1.0pt;mso-border-alt:
|
---|
1533 | solid #D5D5D5 .75pt;padding:6.0pt 6.0pt 6.0pt 6.0pt;background:#FAFAFA;
|
---|
1534 | margin-left:24.0pt;margin-right:24.0pt'>
|
---|
1535 |
|
---|
1536 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1537 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1538 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1539 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span class=GramE><span
|
---|
1540 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1541 | color:black'>for</span></span><span style='font-size:10.0pt;font-family:"Courier New";
|
---|
1542 | mso-fareast-font-family:"Times New Roman";color:black'> (<span class=SpellE>i</span>=0;
|
---|
1543 | <span class=SpellE>i</span><<span class=SpellE>NumThreads</span>; <span
|
---|
1544 | class=SpellE>i</span>++){<o:p></o:p></span></p>
|
---|
1545 |
|
---|
1546 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1547 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1548 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1549 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1550 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1551 | style='mso-spacerun:yes'> </span><span class=SpellE>RenderThread</span>::<span
|
---|
1552 | class=GramE>Launch(</span>scene, pout, <span class=SpellE>XRes</span>, <span
|
---|
1553 | class=SpellE>YRes</span>, <span class=SpellE>Xloc</span>, <span class=SpellE>Yloc</span>,
|
---|
1554 | <span class=SpellE>Zloc</span>,<o:p></o:p></span></p>
|
---|
1555 |
|
---|
1556 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1557 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1558 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1559 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1560 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1561 | style='mso-spacerun:yes'> </span><span class=SpellE>NumThreads</span>, <span
|
---|
1562 | class=SpellE>i</span>, (<span class=SpellE>uchar</span> *<span class=GramE>)<span
|
---|
1563 | class=SpellE>theBitmap</span></span>->Bits(), <o:p></o:p></span></p>
|
---|
1564 |
|
---|
1565 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1566 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1567 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1568 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1569 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1570 | style='mso-tab-count:1'> </span><span style='mso-spacerun:yes'>
|
---|
1571 | </span>B_LOW_PRIORITY, "thread");<o:p></o:p></span></p>
|
---|
1572 |
|
---|
1573 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1574 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1575 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1576 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1577 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'>}<o:p></o:p></span></p>
|
---|
1578 |
|
---|
1579 | </div>
|
---|
1580 |
|
---|
1581 | <p class=MsoNormal><span style='font-family:"Courier New"'><span
|
---|
1582 | style='mso-tab-count:3'> </span></span></p>
|
---|
1583 |
|
---|
1584 | <p class=MsoNormal><span style='mso-spacerun:yes'> </span>From
|
---|
1585 | RenderThread.cpp, the inner loop of rendering, for each thread:</p>
|
---|
1586 |
|
---|
1587 | <div style='mso-element:para-border-div;border:solid #D5D5D5 1.0pt;mso-border-alt:
|
---|
1588 | solid #D5D5D5 .75pt;padding:6.0pt 6.0pt 6.0pt 6.0pt;background:#FAFAFA;
|
---|
1589 | margin-left:24.0pt;margin-right:24.0pt'>
|
---|
1590 |
|
---|
1591 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1592 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1593 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1594 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1595 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'>//do
|
---|
1596 | rendering<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
---|
1597 |
|
---|
1598 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1599 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1600 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1601 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span class=GramE><span
|
---|
1602 | style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
|
---|
1603 | color:black'>void</span></span><span style='font-size:10.0pt;font-family:"Courier New";
|
---|
1604 | mso-fareast-font-family:"Times New Roman";color:black'> <span class=SpellE>RenderThread</span>::Run(){<o:p></o:p></span></p>
|
---|
1605 |
|
---|
1606 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1607 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1608 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1609 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1610 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1611 | style='mso-spacerun:yes'> </span><span class=SpellE><span class=GramE>int</span></span>
|
---|
1612 | <span class=SpellE>y,x</span>;<o:p></o:p></span></p>
|
---|
1613 |
|
---|
1614 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1615 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1616 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1617 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1618 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1619 | style='mso-spacerun:yes'> </span><span class=SpellE><span class=GramE>int</span></span>
|
---|
1620 | <span class=SpellE>Ychunk</span>, <span class=SpellE>Ystart</span>, <span
|
---|
1621 | class=SpellE>Yend</span>;<o:p></o:p></span></p>
|
---|
1622 |
|
---|
1623 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1624 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1625 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1626 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1627 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1628 | style='mso-spacerun:yes'> </span><span class=SpellE><span class=GramE>uchar</span></span>
|
---|
1629 | *b0;<o:p></o:p></span></p>
|
---|
1630 |
|
---|
1631 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1632 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1633 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1634 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1635 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1636 | style='mso-spacerun:yes'> </span>b0 = <span class=SpellE>MyBits</span>;<o:p></o:p></span></p>
|
---|
1637 |
|
---|
1638 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1639 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1640 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1641 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1642 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1643 | style='mso-spacerun:yes'> </span><span style='mso-tab-count:1'> </span><o:p></o:p></span></p>
|
---|
1644 |
|
---|
1645 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1646 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1647 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1648 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1649 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1650 | style='mso-spacerun:yes'> </span>// outer loop<o:p></o:p></span></p>
|
---|
1651 |
|
---|
1652 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1653 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1654 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1655 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1656 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1657 | style='mso-tab-count:1'> </span><span style='mso-spacerun:yes'> </span>// <span
|
---|
1658 | class=GramE>Calculate</span> offsets for thread image portion<o:p></o:p></span></p>
|
---|
1659 |
|
---|
1660 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1661 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1662 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1663 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1664 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1665 | style='mso-spacerun:yes'> </span><span class=SpellE>Ychunk</span> = <span
|
---|
1666 | class=SpellE>YRes</span> / <span class=SpellE>MyTotThreads</span>;<o:p></o:p></span></p>
|
---|
1667 |
|
---|
1668 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1669 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1670 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1671 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1672 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1673 | style='mso-spacerun:yes'> </span><span class=SpellE>Ystart</span> = <span
|
---|
1674 | class=SpellE>MyWhichThread</span> * <span class=SpellE>Ychunk</span>;<o:p></o:p></span></p>
|
---|
1675 |
|
---|
1676 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1677 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1678 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1679 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1680 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1681 | style='mso-spacerun:yes'> </span><span class=SpellE>Yend</span> = <span
|
---|
1682 | class=SpellE>Ystart</span> + <span class=SpellE>Ychunk</span>;<o:p></o:p></span></p>
|
---|
1683 |
|
---|
1684 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1685 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1686 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1687 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1688 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1689 |
|
---|
1690 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1691 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1692 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1693 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1694 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1695 | style='mso-spacerun:yes'> </span><span class=GramE>for</span> (y=<span
|
---|
1696 | class=SpellE>Ystart</span>; y<<span class=SpellE>Yend</span>; y++){<o:p></o:p></span></p>
|
---|
1697 |
|
---|
1698 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1699 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1700 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1701 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1702 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1703 | style='mso-spacerun:yes'> </span><span style='mso-tab-count:1'> </span>b0
|
---|
1704 | = <span class=SpellE>MyBits</span> + (y*<span class=SpellE>XRes</span>*4); // pointer
|
---|
1705 | into threads section<o:p></o:p></span></p>
|
---|
1706 |
|
---|
1707 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1708 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1709 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1710 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1711 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1712 | style='mso-spacerun:yes'> </span><span style='mso-tab-count:1'> </span><span
|
---|
1713 | class=GramE>for</span> (x=<span class=SpellE>xloc</span>; x<<span
|
---|
1714 | class=SpellE>XRes+xloc</span>; x++){<o:p></o:p></span></p>
|
---|
1715 |
|
---|
1716 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1717 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1718 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1719 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1720 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1721 | style='mso-spacerun:yes'> </span><span style='mso-tab-count:1'> </span>//
|
---|
1722 | inner loop<o:p></o:p></span></p>
|
---|
1723 |
|
---|
1724 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1725 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1726 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1727 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1728 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1729 | style='mso-tab-count:2'> </span><span style='mso-spacerun:yes'>
|
---|
1730 | </span>// create a point of view vector of X<span class=GramE>,Y,Z</span><o:p></o:p></span></p>
|
---|
1731 |
|
---|
1732 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1733 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1734 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1735 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1736 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1737 | style='mso-spacerun:yes'> </span>Vector3 <span class=GramE>pos(</span>
|
---|
1738 | ((DBL)x+((DBL).5))/<span class=SpellE>XRes</span>, ((DBL)1)-((DBL)<span
|
---|
1739 | class=SpellE>y+yloc</span>+((DBL)0.5))/<span class=SpellE>YRes</span>, (DBL)<span
|
---|
1740 | class=SpellE>zloc</span>);<o:p></o:p></span></p>
|
---|
1741 |
|
---|
1742 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1743 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1744 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1745 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1746 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1747 |
|
---|
1748 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1749 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1750 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1751 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1752 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1753 | style='mso-tab-count:2'> </span><span style='mso-spacerun:yes'>
|
---|
1754 | </span>// trace the ray from light to POV<o:p></o:p></span></p>
|
---|
1755 |
|
---|
1756 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1757 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1758 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1759 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1760 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1761 | style='mso-spacerun:yes'> </span><span class=SpellE>ColourA</span>
|
---|
1762 | res = <span class=SpellE>imageplane</span>-><span class=SpellE><span
|
---|
1763 | class=GramE>evaluateAt</span></span><span class=GramE>(</span>pos);<o:p></o:p></span></p>
|
---|
1764 |
|
---|
1765 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1766 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1767 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1768 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1769 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1770 | style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
---|
1771 |
|
---|
1772 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1773 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1774 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1775 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1776 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1777 | style='mso-tab-count:2'> </span><span style='mso-spacerun:yes'>
|
---|
1778 | </span>// once calculated, update bitmap with R<span class=GramE>,G,B</span><o:p></o:p></span></p>
|
---|
1779 |
|
---|
1780 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1781 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1782 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1783 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1784 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1785 | style='mso-tab-count:2'> </span><span style='mso-spacerun:yes'>
|
---|
1786 | </span>*b0++ = (<span class=SpellE>uint</span><span class=GramE>)(</span>(std::min(<span
|
---|
1787 | class=SpellE>res.c</span>[2],(CLR)1)*255));<o:p></o:p></span></p>
|
---|
1788 |
|
---|
1789 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1790 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1791 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1792 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1793 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1794 | style='mso-tab-count:2'> </span><span style='mso-spacerun:yes'>
|
---|
1795 | </span>*b0++ = (<span class=SpellE>uint</span><span class=GramE>)(</span>(std::min(<span
|
---|
1796 | class=SpellE>res.c</span>[1],(CLR)1)*255));<o:p></o:p></span></p>
|
---|
1797 |
|
---|
1798 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1799 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1800 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1801 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1802 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1803 | style='mso-tab-count:2'> </span><span style='mso-spacerun:yes'>
|
---|
1804 | </span>*b0++ = (<span class=SpellE>uint</span><span class=GramE>)(</span>(std::min(<span
|
---|
1805 | class=SpellE>res.c</span>[0],(CLR)1)*255));<o:p></o:p></span></p>
|
---|
1806 |
|
---|
1807 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1808 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1809 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1810 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1811 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1812 | style='mso-tab-count:2'> </span><span style='mso-spacerun:yes'>
|
---|
1813 | </span>*b0++;<o:p></o:p></span></p>
|
---|
1814 |
|
---|
1815 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1816 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1817 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1818 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1819 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1820 | style='mso-spacerun:yes'> </span>}<o:p></o:p></span></p>
|
---|
1821 |
|
---|
1822 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1823 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1824 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1825 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1826 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1827 |
|
---|
1828 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1829 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1830 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1831 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1832 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1833 | style='mso-spacerun:yes'> </span>// redraw image at the end of every row<o:p></o:p></span></p>
|
---|
1834 |
|
---|
1835 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1836 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1837 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1838 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1839 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1840 | style='mso-tab-count:1'> </span><span style='mso-spacerun:yes'> </span>//
|
---|
1841 | lock the bitmap so only one thread updates the screen<o:p></o:p></span></p>
|
---|
1842 |
|
---|
1843 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1844 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1845 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1846 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1847 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1848 | style='mso-tab-count:1'> </span><span style='mso-spacerun:yes'> </span>// at
|
---|
1849 | a time<o:p></o:p></span></p>
|
---|
1850 |
|
---|
1851 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1852 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1853 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1854 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1855 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1856 | style='mso-spacerun:yes'> </span><span class=SpellE><span class=GramE>theBitmap</span></span>->Lock();<o:p></o:p></span></p>
|
---|
1857 |
|
---|
1858 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1859 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1860 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1861 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1862 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1863 | style='mso-spacerun:yes'> </span><span class=SpellE><span class=GramE>povView</span></span>-><span
|
---|
1864 | class=SpellE>LockLooper</span>();<o:p></o:p></span></p>
|
---|
1865 |
|
---|
1866 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1867 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1868 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1869 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1870 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1871 | style='mso-spacerun:yes'> </span><span class=SpellE><span class=GramE>povView</span></span>->Invalidate(<span
|
---|
1872 | class=SpellE>BRect</span>(0,y,x,y));<o:p></o:p></span></p>
|
---|
1873 |
|
---|
1874 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1875 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1876 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1877 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1878 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1879 | style='mso-spacerun:yes'> </span><span class=SpellE><span class=GramE>povView</span></span>-><span
|
---|
1880 | class=SpellE>UnlockLooper</span>();<o:p></o:p></span></p>
|
---|
1881 |
|
---|
1882 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1883 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1884 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1885 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1886 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1887 | style='mso-spacerun:yes'> </span><span class=SpellE><span class=GramE>theBitmap</span></span>->Unlock();<o:p></o:p></span></p>
|
---|
1888 |
|
---|
1889 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1890 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1891 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1892 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1893 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><o:p> </o:p></span></p>
|
---|
1894 |
|
---|
1895 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1896 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1897 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1898 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1899 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1900 | style='mso-spacerun:yes'> </span>}<o:p></o:p></span></p>
|
---|
1901 |
|
---|
1902 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1903 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1904 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1905 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1906 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1907 | style='mso-spacerun:yes'> </span><span class=GramE>delete</span> this;<o:p></o:p></span></p>
|
---|
1908 |
|
---|
1909 | <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;
|
---|
1910 | margin-left:0in;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
|
---|
1911 | background:#FAFAFA;border:none;mso-border-alt:solid #D5D5D5 .75pt;padding:0in;
|
---|
1912 | mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'><span style='font-size:10.0pt;
|
---|
1913 | font-family:"Courier New";mso-fareast-font-family:"Times New Roman";color:black'><span
|
---|
1914 | style='mso-spacerun:yes'> </span>}<o:p></o:p></span></p>
|
---|
1915 |
|
---|
1916 | </div>
|
---|
1917 |
|
---|
1918 | <h1>Adding a GUI</h1>
|
---|
1919 |
|
---|
1920 | <p class=MsoNormal>I added a simple GUI to the ray tracing code to allow choices
|
---|
1921 | for screen size, number of threads, scene selection, basic motion control, and
|
---|
1922 | to display the image. The technique for display is to create a single bitmap
|
---|
1923 | that would be updated by each thread. Normally you would not want multiple
|
---|
1924 | threads updating an object willy-nilly. This would be a source of contention,
|
---|
1925 | resulting in lost writes. Normally you would need to enforce orderly updates
|
---|
1926 | using semaphores and locks. But in this case each thread is guaranteed to
|
---|
1927 | update only its section of the bitmap. For efficiency sake the bitmap is only
|
---|
1928 | redrawn at the completion of each line. </p>
|
---|
1929 |
|
---|
1930 | <h1><span style='font-size:11.0pt;line-height:115%;font-family:"Calibri","sans-serif";
|
---|
1931 | mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:
|
---|
1932 | minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
---|
1933 | mso-bidi-theme-font:minor-bidi;color:windowtext;font-weight:normal;mso-bidi-font-weight:
|
---|
1934 | bold;mso-no-proof:yes'><!--[if gte vml 1]><v:shapetype id="_x0000_t75"
|
---|
1935 | coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
|
---|
1936 | filled="f" stroked="f">
|
---|
1937 | <v:stroke joinstyle="miter"/>
|
---|
1938 | <v:formulas>
|
---|
1939 | <v:f eqn="if lineDrawn pixelLineWidth 0"/>
|
---|
1940 | <v:f eqn="sum @0 1 0"/>
|
---|
1941 | <v:f eqn="sum 0 0 @1"/>
|
---|
1942 | <v:f eqn="prod @2 1 2"/>
|
---|
1943 | <v:f eqn="prod @3 21600 pixelWidth"/>
|
---|
1944 | <v:f eqn="prod @3 21600 pixelHeight"/>
|
---|
1945 | <v:f eqn="sum @0 0 1"/>
|
---|
1946 | <v:f eqn="prod @6 1 2"/>
|
---|
1947 | <v:f eqn="prod @7 21600 pixelWidth"/>
|
---|
1948 | <v:f eqn="sum @8 21600 0"/>
|
---|
1949 | <v:f eqn="prod @7 21600 pixelHeight"/>
|
---|
1950 | <v:f eqn="sum @10 21600 0"/>
|
---|
1951 | </v:formulas>
|
---|
1952 | <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
|
---|
1953 | <o:lock v:ext="edit" aspectratio="t"/>
|
---|
1954 | </v:shapetype><v:shape id="Picture_x0020_1" o:spid="_x0000_i1026" type="#_x0000_t75"
|
---|
1955 | style='width:467.25pt;height:439.5pt;visibility:visible;mso-wrap-style:square'>
|
---|
1956 | <v:imagedata src="Symmetric%20Multiprocessing%20on%20Haiku%20_files/image001.png"
|
---|
1957 | o:title=""/>
|
---|
1958 | </v:shape><![endif]--><![if !vml]><img border=0 width=623 height=586
|
---|
1959 | src="Symmetric%20Multiprocessing%20on%20Haiku%20_files/image005.jpg" v:shapes="Picture_x0020_1"><![endif]></span></h1>
|
---|
1960 |
|
---|
1961 | <h1 align=center style='text-align:center'><span style='font-size:11.0pt;
|
---|
1962 | line-height:115%;font-family:"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;
|
---|
1963 | mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:
|
---|
1964 | minor-latin;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
|
---|
1965 | color:windowtext;font-weight:normal'>Screen Shot 1 Basic Interface<o:p></o:p></span></h1>
|
---|
1966 |
|
---|
1967 | <p class=MsoNormal><o:p> </o:p></p>
|
---|
1968 |
|
---|
1969 | <p class=MsoNormal><span style='mso-no-proof:yes'><!--[if gte vml 1]><v:shape
|
---|
1970 | id="Picture_x0020_2" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:467.25pt;
|
---|
1971 | height:439.5pt;visibility:visible;mso-wrap-style:square'>
|
---|
1972 | <v:imagedata src="Symmetric%20Multiprocessing%20on%20Haiku%20_files/image003.png"
|
---|
1973 | o:title=""/>
|
---|
1974 | </v:shape><![endif]--><![if !vml]><img border=0 width=623 height=586
|
---|
1975 | src="Symmetric%20Multiprocessing%20on%20Haiku%20_files/image006.jpg" v:shapes="Picture_x0020_2"><![endif]></span></p>
|
---|
1976 |
|
---|
1977 | <p class=MsoNormal align=center style='text-align:center'>Screen Shot 2 Shows
|
---|
1978 | rendering with 4 threads</p>
|
---|
1979 |
|
---|
1980 | <h1>Future Directions: Real Time Rendering, Cloud Computing, GPU</h1>
|
---|
1981 |
|
---|
1982 | <p class=MsoNormal><span class=SpellE>Michas</span> code was a great place to
|
---|
1983 | start. It had the benefits of being portable and very modular. What it didnt
|
---|
1984 | have was the ability to read in scene files.<span style='mso-spacerun:yes'>
|
---|
1985 | </span>It would be nice to create additional 3D scenes and import them. The
|
---|
1986 | code is also not the fastest. Other code such as Intels <span class=SpellE><span
|
---|
1987 | class=GramE>Embree</span></span><span class=GramE> <span
|
---|
1988 | style='mso-spacerun:yes'> </span>code</span> are faster, and bring the promise
|
---|
1989 | of real-time rendering within reach. </p>
|
---|
1990 |
|
---|
1991 | <p class=MsoNormal>Another direction is to de-couple the GUI from the
|
---|
1992 | rendering, and implement a client/server approach. The GUI would act as a front
|
---|
1993 | end client that requests the rendering from another, presumably faster server.
|
---|
1994 | The server would render the image and return portions of the image when
|
---|
1995 | completed. This is how commercial rendering is done, with thousands of servers
|
---|
1996 | sharing the rendering.<span style='mso-spacerun:yes'> </span>By running Haiku
|
---|
1997 | ray trace servers remotely, <span class=GramE>in<span
|
---|
1998 | style='mso-spacerun:yes'> </span>Amazon</span> AWS, for instance, it would be
|
---|
1999 | possible to introduce Haiku to cloud computing. </p>
|
---|
2000 |
|
---|
2001 | <p class=MsoNormal>It should also be possible to add code that uses the
|
---|
2002 | processing power of a video card, or GPU, to compute the ray tracing. </p>
|
---|
2003 |
|
---|
2004 | <p class=MsoNormal>The method to assign image portions to threads in <span
|
---|
2005 | class=SpellE>BeTrace</span> is the simplest possible. The down side is that it
|
---|
2006 | is not always efficient. A thread could have a portion of an image with little
|
---|
2007 | to render. It will finish early and the core will go idle.<span
|
---|
2008 | style='mso-spacerun:yes'> </span>A smarter subdivision method would assign
|
---|
2009 | smaller portions of the image for more efficient overall usage of CPU. <span
|
---|
2010 | class=GramE>For instance, on a line by line basis.</span> </p>
|
---|
2011 |
|
---|
2012 | <p class=MsoNormal>POV-Ray and Blender are two open source 3D development
|
---|
2013 | applications. It would be great to port them to Haiku. </p>
|
---|
2014 |
|
---|
2015 | <p class=MsoNormal><span class=SpellE>BeTracer</span> source code is provided
|
---|
2016 | in a link in the appendix. </p>
|
---|
2017 |
|
---|
2018 | <h1>Appendix</h1>
|
---|
2019 |
|
---|
2020 | <p class=MsoNormal><o:p> </o:p></p>
|
---|
2021 |
|
---|
2022 | <p class=MsoNormal>Wikipedia Definition of Threads</p>
|
---|
2023 |
|
---|
2024 | <p class=MsoNormal><a href="https://en.wikipedia.org/wiki/Thread_(computing)">https://en.wikipedia.org/wiki/Thread_(computing)</a></p>
|
---|
2025 |
|
---|
2026 | <p class=MsoNormal>Be Newsletters</p>
|
---|
2027 |
|
---|
2028 | <p class=MsoNormal><a href="https://www.haiku-os.org/legacy-docs/benewsletter/">https://www.haiku-os.org/legacy-docs/benewsletter/</a></p>
|
---|
2029 |
|
---|
2030 | <p class=MsoNormal>Haiku Scheduler</p>
|
---|
2031 |
|
---|
2032 | <p class=MsoNormal><a
|
---|
2033 | href="https://www.haiku-os.org/blog/pawe%C5%82_dziepak/2013-12-20_haiku_meets_9th_processor">https://www.haiku-os.org/blog/pawe%C5%82_dziepak/2013-12-20_haiku_meets_9th_processor</a></p>
|
---|
2034 |
|
---|
2035 | <p class=MsoNormal>Fun with threads</p>
|
---|
2036 |
|
---|
2037 | <p class=MsoNormal>What Makes Multi-threaded Programming Hard?</p>
|
---|
2038 |
|
---|
2039 | <p class=MsoNormal><a
|
---|
2040 | href="http://www.futurechips.org/tips-for-power-coders/parallel-programming.html">http://www.futurechips.org/tips-for-power-coders/parallel-programming.html</a></p>
|
---|
2041 |
|
---|
2042 | <p class=MsoNormal>Haiku Mandelbrot Code</p>
|
---|
2043 |
|
---|
2044 | <p class=MsoNormal><a
|
---|
2045 | href="https://github.com/luciang/haiku/tree/master/src/apps/mandelbrot">https://github.com/luciang/haiku/tree/master/src/apps/mandelbrot</a></p>
|
---|
2046 |
|
---|
2047 | <p class=MsoNormal>Archived Be Newsletters</p>
|
---|
2048 |
|
---|
2049 | <p class=MsoNormal><a
|
---|
2050 | href="https://www.haiku-os.org/legacy-docs/benewsletter/Issue3-32.html">https://www.haiku-os.org/legacy-docs/benewsletter/Issue3-32.html</a></p>
|
---|
2051 |
|
---|
2052 | <p class=MsoNormal>Slider code</p>
|
---|
2053 |
|
---|
2054 | <p class=MsoNormal><a
|
---|
2055 | href="https://www.haiku-os.org/legacy-docs/benewsletter/Issue3-9.html">https://www.haiku-os.org/legacy-docs/benewsletter/Issue3-9.html</a></p>
|
---|
2056 |
|
---|
2057 | <p class=MsoNormal>More slider code, <span class=SpellE>Dynagraph</span> sample
|
---|
2058 | code</p>
|
---|
2059 |
|
---|
2060 | <p class=MsoNormal><a
|
---|
2061 | href="https://www.haiku-os.org/legacy-docs/benewsletter/Issue3-22.html">https://www.haiku-os.org/legacy-docs/benewsletter/Issue3-22.html</a></p>
|
---|
2062 |
|
---|
2063 | <p class=MsoNormal>Intel <span class=SpellE>Embree</span> Optimized Ray Tracing
|
---|
2064 | Kernels</p>
|
---|
2065 |
|
---|
2066 | <p class=MsoNormal><a href="http://embree.github.io/">http://embree.github.io/</a></p>
|
---|
2067 |
|
---|
2068 | <p class=MsoNormal>POV-Ray</p>
|
---|
2069 |
|
---|
2070 | <p class=MsoNormal><a href="http://www.povray.org/download/">http://www.povray.org/download/</a></p>
|
---|
2071 |
|
---|
2072 | <p class=MsoNormal>Blender</p>
|
---|
2073 |
|
---|
2074 | <p class=MsoNormal><a href="https://www.blender.org/download/">https://www.blender.org/download/</a></p>
|
---|
2075 |
|
---|
2076 | <p class=MsoNormal><span class=SpellE>BeTracer</span> Source Code</p>
|
---|
2077 |
|
---|
2078 | <p class=MsoNormal><a
|
---|
2079 | href="https://onedrive.live.com/redir?resid=23646DEFC0827C85!33167&authkey=!AC9ascWSzjh5Nik&ithint=file%2ctar">https://onedrive.live.com/redir?resid=23646DEFC0827C85!33167&authkey=!AC9ascWSzjh5Nik&ithint=file%2ctar</a></p>
|
---|
2080 |
|
---|
2081 | <p class=MsoNormal>A Programmers Introduction to Haiku</p>
|
---|
2082 |
|
---|
2083 | <p class=MsoNormal><a
|
---|
2084 | href="http://www.osnews.com/story/24945/A_Programmer_s_Introduction_to_the_Haiku_OS">http://www.osnews.com/story/24945/A_Programmer_s_Introduction_to_the_Haiku_OS</a></p>
|
---|
2085 |
|
---|
2086 | <p class=MsoNormal>Writing Applications for Haiku</p>
|
---|
2087 |
|
---|
2088 | <p class=MsoNormal><a
|
---|
2089 | href="http://www.osnews.com/story/22903/Writing_Applications_for_Haiku">http://www.osnews.com/story/22903/Writing_Applications_for_Haiku</a></p>
|
---|
2090 |
|
---|
2091 | <p class=MsoNormal><o:p> </o:p></p>
|
---|
2092 |
|
---|
2093 | </div>
|
---|
2094 |
|
---|
2095 | </body>
|
---|
2096 |
|
---|
2097 | </html>
|
---|