home *** CD-ROM | disk | FTP | other *** search
/ Game Programming - All in One (3rd Edition) / game_prog_all_in_one_3rd_ed.iso / sources / chapter21 / MultiThread / MultiThread.opt / Browser next >
Unknown  |  2004-04-07  |  5.0 KB

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text


This file was not able to be converted.
This format is not currently supported by dexvert.

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert Inset PIX (image/insetPix) magic Supported
100% file data default
57% TrID Install Maker project default (weak)
28% TrID Inset PIX bitmap default (weak)
14% TrID XBase DataBase (generic) default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 03 00 01 00 00 00 00 00 | 00 00 00 01 00 00 00 68 |........|.......h|
|00000010| 72 65 61 64 49 44 3a 5c | 42 6f 6f 6b 20 50 72 6f |readID:\|Book Pro|
|00000020| 6a 65 63 74 73 5c 41 6c | 6c 20 49 6e 20 4f 6e 65 |jects\Al|l In One|
|00000030| 5c 73 6f 75 72 63 65 73 | 5c 63 68 61 70 74 65 72 |\sources|\chapter|
|00000040| 31 31 5c 4d 75 6c 74 69 | 54 68 72 65 61 64 5c 4d |11\Multi|Thread\M|
|00000050| 75 6c 74 69 54 68 72 65 | 61 64 2e 64 73 70 01 00 |ultiThre|ad.dsp..|
|00000060| 00 00 20 44 65 62 75 67 | 2d 2d 2d 2d 2d 2d 2d 2d |.. Debug|--------|
|00000070| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0a 3c 2f 68 |--------|----.</h|
|00000080| 33 3e 0a 3c 68 33 3e 43 | 6f 6d 6d 61 6e 64 20 4c |3>.<h3>C|ommand L|
|00000090| 69 6e 65 73 3c 2f 68 33 | 3e 0a 43 72 65 61 74 69 |ines</h3|>.Creati|
|000000a0| 6e 67 20 74 65 6d 70 6f | 72 61 72 79 20 66 69 6c |ng tempo|rary fil|
|000000b0| 65 20 22 43 3a 5c 44 4f | 43 55 4d 45 7e 31 5c 4a |e "C:\DO|CUME~1\J|
|000000c0| 6f 6e 61 74 68 61 6e 5c | 4c 4f 43 41 4c 53 7e 31 |onathan\|LOCALS~1|
|000000d0| 5c 54 65 6d 70 5c 52 53 | 50 33 43 37 2e 74 6d 70 |\Temp\RS|P3C7.tmp|
|000000e0| 22 20 77 69 74 68 20 63 | 6f 6e 74 65 6e 74 73 0a |" with c|ontents.|
|000000f0| 5b 0a 2f 6e 6f 6c 6f 67 | 6f 20 2f 4d 4c 64 20 2f |[./nolog|o /MLd /|
|00000100| 57 33 20 2f 47 6d 20 2f | 47 58 20 2f 5a 49 20 2f |W3 /Gm /|GX /ZI /|
|00000110| 4f 64 20 2f 44 20 22 57 | 49 4e 33 32 22 20 2f 44 |Od /D "W|IN32" /D|
|00000120| 20 22 5f 44 45 42 55 47 | 22 20 2f 44 20 22 5f 57 | "_DEBUG|" /D "_W|
|00000130| 49 4e 44 4f 57 53 22 20 | 2f 44 20 22 5f 4d 42 43 |INDOWS" |/D "_MBC|
|00000140| 53 22 20 2f 46 70 22 44 | 65 62 75 67 2f 4d 75 6c |S" /Fp"D|ebug/Mul|
|00000150| 74 69 54 68 72 65 61 64 | 2e 70 63 68 22 20 2f 59 |tiThread|.pch" /Y|
|00000160| 58 20 2f 46 6f 22 44 65 | 62 75 67 2f 22 20 2f 46 |X /Fo"De|bug/" /F|
|00000170| 64 22 44 65 62 75 67 2f | 22 20 2f 46 44 20 2f 47 |d"Debug/|" /FD /G|
|00000180| 5a 20 2f 63 20 0a 22 44 | 3a 5c 42 6f 6f 6b 20 50 |Z /c ."D|:\Book P|
|00000190| 72 6f 6a 65 63 74 73 5c | 41 6c 6c 20 49 6e 20 4f |rojects\|All In O|
|000001a0| 6e 65 5c 73 6f 75 72 63 | 65 73 5c 63 68 61 70 74 |ne\sourc|es\chapt|
|000001b0| 65 72 31 31 5c 4d 75 6c | 74 69 54 68 72 65 61 64 |er11\Mul|tiThread|
|000001c0| 5c 6d 61 69 6e 2e 63 22 | 0a 5d 0a 43 72 65 61 74 |\main.c"|.].Creat|
|000001d0| 69 6e 67 20 63 6f 6d 6d | 61 6e 64 20 6c 69 6e 65 |ing comm|and line|
|000001e0| 20 22 63 6c 2e 65 78 65 | 20 40 43 3a 5c 44 4f 43 | "cl.exe| @C:\DOC|
|000001f0| 55 4d 45 7e 31 5c 4a 6f | 6e 61 74 68 61 6e 5c 4c |UME~1\Jo|nathan\L|
|00000200| 4f 43 41 4c 53 7e 31 5c | 54 65 6d 70 5c 52 53 50 |OCALS~1\|Temp\RSP|
|00000210| 33 43 37 2e 74 6d 70 22 | 20 0a 43 72 65 61 74 69 |3C7.tmp"| .Creati|
|00000220| 6e 67 20 63 6f 6d 6d 61 | 6e 64 20 6c 69 6e 65 20 |ng comma|nd line |
|00000230| 22 6c 69 6e 6b 2e 65 78 | 65 20 61 6c 6c 65 67 2e |"link.ex|e alleg.|
|00000240| 6c 69 62 20 70 74 68 72 | 65 61 64 56 43 2e 6c 69 |lib pthr|eadVC.li|
|00000250| 62 20 2f 6e 6f 6c 6f 67 | 6f 20 2f 73 75 62 73 79 |b /nolog|o /subsy|
|00000260| 73 74 65 6d 3a 77 69 6e | 64 6f 77 73 20 2f 69 6e |stem:win|dows /in|
|00000270| 63 72 65 6d 65 6e 74 61 | 6c 3a 79 65 73 20 2f 70 |crementa|l:yes /p|
|00000280| 64 62 3a 22 44 65 62 75 | 67 2f 4d 75 6c 74 69 54 |db:"Debu|g/MultiT|
|00000290| 68 72 65 61 64 2e 70 64 | 62 22 20 2f 64 65 62 75 |hread.pd|b" /debu|
|000002a0| 67 20 2f 6d 61 63 68 69 | 6e 65 3a 49 33 38 36 20 |g /machi|ne:I386 |
|000002b0| 2f 6f 75 74 3a 22 44 65 | 62 75 67 2f 4d 75 6c 74 |/out:"De|bug/Mult|
|000002c0| 69 54 68 72 65 61 64 2e | 65 78 65 22 20 2f 70 64 |iThread.|exe" /pd|
|000002d0| 62 74 79 70 65 3a 73 65 | 70 74 20 20 22 2e 5c 44 |btype:se|pt ".\D|
|000002e0| 65 62 75 67 5c 6d 61 69 | 6e 2e 6f 62 6a 22 20 22 |ebug\mai|n.obj" "|
|000002f0| 0a 3c 68 33 3e 4f 75 74 | 70 75 74 20 57 69 6e 64 |.<h3>Out|put Wind|
|00000300| 6f 77 3c 2f 68 33 3e 0a | 43 6f 6d 70 69 6c 69 6e |ow</h3>.|Compilin|
|00000310| 67 2e 2e 2e 0a 6d 61 69 | 6e 2e 63 0a 4c 69 6e 6b |g....mai|n.c.Link|
|00000320| 69 6e 67 2e 2e 2e 0a 0a | 0a 0a 3c 68 33 3e 52 65 |ing.....|..<h3>Re|
|00000330| 73 75 6c 74 73 3c 2f 68 | 33 3e 0a 4d 75 6c 74 69 |sults</h|3>.Multi|
|00000340| 54 68 72 65 61 64 2e 65 | 78 65 20 2d 20 30 20 65 |Thread.e|xe - 0 e|
|00000350| 72 72 6f 72 28 73 29 2c | 20 30 20 77 61 72 6e 69 |rror(s),| 0 warni|
|00000360| 6e 67 28 73 29 0a 3c 2f | 70 72 65 3e 0a 3c 2f 62 |ng(s).</|pre>.</b|
|00000370| 6f 64 79 3e 0a 3c 2f 68 | 74 6d 6c 3e 0a 6c 6f 63 |ody>.</h|tml>.loc|
|00000380| 6b 65 64 22 2c 30 2c 30 | 2c 57 48 49 54 45 29 3b |ked",0,0|,WHITE);|
|00000390| 0d 0a 20 20 20 20 20 20 | 20 20 0d 0a 20 20 20 20 |.. | .. |
|000003a0| 20 20 20 20 2f 2f 65 72 | 61 73 65 20 73 70 72 69 | //er|ase spri|
|000003b0| 74 65 20 30 0d 0a 20 20 | 20 20 20 20 20 20 65 72 |te 0.. | er|
|000003c0| 61 73 65 73 70 72 69 74 | 65 28 62 75 66 66 65 72 |asesprit|e(buffer|
|000003d0| 2c 20 62 61 6c 6c 73 5b | 30 5d 29 3b 0d 0a 0d 0a |, balls[|0]);....|
|000003e0| 20 20 20 20 20 20 20 20 | 2f 2f 75 70 64 61 74 65 | |//update|
|000003f0| 20 73 70 72 69 74 65 20 | 30 0d 0a 20 20 20 20 20 | sprite |0.. |
|00000400| 20 20 20 75 70 64 61 74 | 65 73 70 72 69 74 65 28 | updat|esprite(|
|00000410| 62 61 6c 6c 73 5b 30 5d | 29 3b 0d 0a 0d 0a 20 20 |balls[0]|);.... |
|00000420| 20 20 20 20 20 20 2f 2f | 62 6f 75 6e 63 65 20 73 | //|bounce s|
|00000430| 70 72 69 74 65 20 30 0d | 0a 20 20 20 20 20 20 20 |prite 0.|. |
|00000440| 20 62 6f 75 6e 63 65 73 | 70 72 69 74 65 28 62 61 | bounces|prite(ba|
|00000450| 6c 6c 73 5b 30 5d 29 3b | 0d 0a 0d 0a 20 20 20 20 |lls[0]);|.... |
|00000460| 20 20 20 20 2f 2f 64 72 | 61 77 20 73 70 72 69 74 | //dr|aw sprit|
|00000470| 65 20 30 0d 0a 20 20 20 | 20 20 20 20 20 64 72 61 |e 0.. | dra|
|00000480| 77 5f 73 70 72 69 74 65 | 28 62 75 66 66 65 72 2c |w_sprite|(buffer,|
|00000490| 20 62 61 6c 6c 69 6d 67 | 5b 62 61 6c 6c 73 5b 30 | ballimg|[balls[0|
|000004a0| 5d 2d 3e 63 75 72 66 72 | 61 6d 65 5d 2c 20 0d 0a |]->curfr|ame], ..|
|000004b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 62 61 6c 6c | | ball|
|000004c0| 73 5b 30 5d 2d 3e 78 2c | 20 62 61 6c 6c 73 5b 30 |s[0]->x,| balls[0|
|000004d0| 5d 2d 3e 79 29 3b 0d 0a | 0d 0a 20 20 20 20 20 20 |]->y);..|.. |
|000004e0| 20 20 2f 2f 75 6e 6c 6f | 63 6b 20 74 68 65 20 6d | //unlo|ck the m|
|000004f0| 75 74 65 78 0d 0a 20 20 | 20 20 20 20 20 20 69 66 |utex.. | if|
|00000500| 20 28 70 74 68 72 65 61 | 64 5f 6d 75 74 65 78 5f | (pthrea|d_mutex_|
|00000510| 75 6e 6c 6f 63 6b 28 26 | 74 68 72 65 61 64 73 61 |unlock(&|threadsa|
|00000520| 66 65 29 29 0d 0a 20 20 | 20 20 20 20 20 20 20 20 |fe)).. | |
|00000530| 20 20 74 65 78 74 6f 75 | 74 28 62 75 66 66 65 72 | textou|t(buffer|
|00000540| 2c 66 6f 6e 74 2c 22 45 | 52 52 4f 52 3a 20 74 68 |,font,"E|RROR: th|
|00000550| 72 65 61 64 20 6d 75 74 | 65 78 20 75 6e 6c 6f 63 |read mut|ex unloc|
|00000560| 6b 20 65 72 72 6f 72 22 | 2c 30 2c 30 2c 57 48 49 |k error"|,0,0,WHI|
|00000570| 54 45 29 3b 0d 0a 0d 0a | 20 20 20 20 20 20 20 20 |TE);....| |
|00000580| 2f 2f 73 6c 6f 77 20 64 | 6f 77 6e 20 28 74 68 69 |//slow d|own (thi|
|00000590| 73 20 74 68 72 65 61 64 | 20 6f 6e 6c 79 21 29 0d |s thread| only!).|
|000005a0| 0a 20 20 20 20 09 72 65 | 73 74 28 32 35 29 3b 0d |. .re|st(25);.|
|000005b0| 0a 20 20 20 20 7d 0d 0a | 0d 0a 20 20 20 20 2f 2f |. }..|.. //|
|000005c0| 20 74 65 72 6d 69 6e 61 | 74 65 20 74 68 65 20 74 | termina|te the t|
|000005d0| 68 72 65 61 64 0d 0a 20 | 20 20 20 70 74 68 72 65 |hread.. | pthre|
|000005e0| 61 64 5f 65 78 69 74 28 | 4e 55 4c 4c 29 3b 0d 0a |ad_exit(|NULL);..|
|000005f0| 0d 0a 20 20 20 20 72 65 | 74 75 72 6e 20 4e 55 4c |.. re|turn NUL|
|00000600| 4c 3b 0d 0a 7d 0d 0a 0d | 0a 2f 2f 74 68 69 73 20 |L;..}...|.//this |
|00000610| 74 68 72 65 61 64 20 75 | 70 64 61 74 65 73 20 74 |thread u|pdates t|
|00000620| 68 65 20 73 63 72 65 65 | 6e 0d 0a 76 6f 69 64 2a |he scree|n..void*|
|00000630| 20 74 68 72 65 61 64 32 | 28 76 6f 69 64 2a 20 64 | thread2|(void* d|
|00000640| 61 74 61 29 0d 0a 7b 0d | 0a 20 20 20 20 2f 2f 67 |ata)..{.|. //g|
|00000650| 65 74 20 74 68 69 73 20 | 74 68 72 65 61 64 20 69 |et this |thread i|
|00000660| 64 0d 0a 20 20 20 20 69 | 6e 74 20 6d 79 5f 74 68 |d.. i|nt my_th|
|00000670| 72 65 61 64 5f 69 64 20 | 3d 20 2a 28 28 69 6e 74 |read_id |= *((int|
|00000680| 2a 29 64 61 74 61 29 3b | 0d 0a 0d 0a 20 20 20 20 |*)data);|.... |
|00000690| 2f 2f 74 68 72 65 61 64 | 27 73 20 6d 61 69 6e 20 |//thread|'s main |
|000006a0| 6c 6f 6f 70 0d 0a 20 20 | 20 20 77 68 69 6c 65 28 |loop.. | while(|
|000006b0| 21 64 6f 6e 65 29 0d 0a | 20 20 20 20 7b 0d 0a 20 |!done)..| {.. |
|000006c0| 20 20 20 20 20 20 20 2f | 2f 6c 6f 63 6b 20 74 68 | /|/lock th|
|000006d0| 65 20 6d 75 74 65 78 20 | 74 6f 20 70 72 6f 74 65 |e mutex |to prote|
|000006e0| 63 74 20 76 61 72 69 61 | 62 6c 65 73 0d 0a 20 20 |ct varia|bles.. |
|000006f0| 20 20 20 20 20 20 69 66 | 20 28 70 74 68 72 65 61 | if| (pthrea|
|00000700| 64 5f 6d 75 74 65 78 5f | 6c 6f 63 6b 28 26 74 68 |d_mutex_|lock(&th|
|00000710| 72 65 61 64 73 61 66 65 | 29 29 0d 0a 20 20 20 20 |readsafe|)).. |
|00000720| 20 20 20 20 20 20 20 20 | 74 65 78 74 6f 75 74 28 | |textout(|
|00000730| 62 75 66 66 65 72 2c 66 | 6f 6e 74 2c 22 45 52 52 |buffer,f|ont,"ERR|
|00000740| 4f 52 3a 20 74 68 72 65 | 61 64 20 6d 75 74 65 78 |OR: thre|ad mutex|
|00000750| 20 77 61 73 20 6c 6f 63 | 6b 65 64 22 2c 30 2c 30 | was loc|ked",0,0|
|00000760| 2c 57 48 49 54 45 29 3b | 0d 0a 0d 0a 20 20 20 20 |,WHITE);|.... |
|00000770| 20 20 20 20 2f 2f 65 72 | 61 73 65 20 73 70 72 69 | //er|ase spri|
|00000780| 74 65 20 31 0d 0a 20 20 | 20 20 20 20 20 20 65 72 |te 1.. | er|
|00000790| 61 73 65 73 70 72 69 74 | 65 28 62 75 66 66 65 72 |asesprit|e(buffer|
|000007a0| 2c 20 62 61 6c 6c 73 5b | 31 5d 29 3b 0d 0a 0d 0a |, balls[|1]);....|
|000007b0| 20 20 20 20 20 20 20 20 | 2f 2f 75 70 64 61 74 65 | |//update|
|000007c0| 20 73 70 72 69 74 65 20 | 31 0d 0a 20 20 20 20 20 | sprite |1.. |
|000007d0| 20 20 20 75 70 64 61 74 | 65 73 70 72 69 74 65 28 | updat|esprite(|
|000007e0| 62 61 6c 6c 73 5b 31 5d | 29 3b 0d 0a 0d 0a 20 20 |balls[1]|);.... |
|000007f0| 20 20 20 20 20 20 2f 2f | 62 6f 75 6e 63 65 20 73 | //|bounce s|
|00000800| 70 72 69 74 65 20 31 0d | 0a 20 20 20 20 20 20 20 |prite 1.|. |
|00000810| 20 62 6f 75 6e 63 65 73 | 70 72 69 74 65 28 62 61 | bounces|prite(ba|
|00000820| 6c 6c 73 5b 31 5d 29 3b | 0d 0a 0d 0a 20 20 20 20 |lls[1]);|.... |
|00000830| 20 20 20 20 2f 2f 64 72 | 61 77 20 73 70 72 69 74 | //dr|aw sprit|
|00000840| 65 20 31 0d 0a 20 20 20 | 20 20 20 20 20 64 72 61 |e 1.. | dra|
|00000850| 77 5f 73 70 72 69 74 65 | 28 62 75 66 66 65 72 2c |w_sprite|(buffer,|
|00000860| 20 62 61 6c 6c 69 6d 67 | 5b 62 61 6c 6c 73 5b 31 | ballimg|[balls[1|
|00000870| 5d 2d 3e 63 75 72 66 72 | 61 6d 65 5d 2c 20 0d 0a |]->curfr|ame], ..|
|00000880| 20 20 20 20 20 20 20 20 | 20 20 20 20 62 61 6c 6c | | ball|
|00000890| 73 5b 31 5d 2d 3e 78 2c | 20 62 61 6c 6c 73 5b 31 |s[1]->x,| balls[1|
|000008a0| 5d 2d 3e 79 29 3b 0d 0a | 0d 0a 20 20 20 20 20 20 |]->y);..|.. |
|000008b0| 20 20 2f 2f 75 6e 6c 6f | 63 6b 20 74 68 65 20 6d | //unlo|ck the m|
|000008c0| 75 74 65 78 0d 0a 20 20 | 20 20 20 20 20 20 69 66 |utex.. | if|
|000008d0| 20 28 70 74 68 72 65 61 | 64 5f 6d 75 74 65 78 5f | (pthrea|d_mutex_|
|000008e0| 75 6e 6c 6f 63 6b 28 26 | 74 68 72 65 61 64 73 61 |unlock(&|threadsa|
|000008f0| 66 65 29 29 0d 0a 20 20 | 20 20 20 20 20 20 20 20 |fe)).. | |
|00000900| 20 20 74 65 78 74 6f 75 | 74 28 62 75 66 66 65 72 | textou|t(buffer|
|00000910| 2c 66 6f 6e 74 2c 22 45 | 52 52 4f 52 3a 20 74 68 |,font,"E|RROR: th|
|00000920| 72 65 61 64 20 6d 75 74 | 65 78 20 75 6e 6c 6f 63 |read mut|ex unloc|
|00000930| 6b 20 65 72 72 6f 72 22 | 2c 30 2c 30 2c 57 48 49 |k error"|,0,0,WHI|
|00000940| 54 45 29 3b 0d 0a 0d 0a | 20 20 20 20 20 20 20 20 |TE);....| |
|00000950| 2f 2f 73 6c 6f 77 20 64 | 6f 77 6e 20 28 74 68 69 |//slow d|own (thi|
|00000960| 73 20 74 68 72 65 61 64 | 20 6f 6e 6c 79 21 29 0d |s thread| only!).|
|00000970| 0a 20 20 20 20 09 72 65 | 73 74 28 35 30 29 3b 0d |. .re|st(50);.|
|00000980| 0a 20 20 20 20 7d 0d 0a | 0d 0a 20 20 20 20 2f 2f |. }..|.. //|
|00000990| 20 74 65 72 6d 69 6e 61 | 74 65 20 74 68 65 20 74 | termina|te the t|
|000009a0| 68 72 65 61 64 0d 0a 20 | 20 20 20 70 74 68 72 65 |hread.. | pthre|
|000009b0| 61 64 5f 65 78 69 74 28 | 4e 55 4c 4c 29 3b 0d 0a |ad_exit(|NULL);..|
|000009c0| 0d 0a 20 20 20 20 72 65 | 74 75 72 6e 20 4e 55 4c |.. re|turn NUL|
|000009d0| 4c 3b 0d 0a 7d 0d 0a 0d | 0a 2f 2f 70 72 6f 67 72 |L;..}...|.//progr|
|000009e0| 61 6d 27 73 20 70 72 69 | 6d 61 72 79 20 74 68 72 |am's pri|mary thr|
|000009f0| 65 61 64 0d 0a 76 6f 69 | 64 20 6d 61 69 6e 28 76 |ead..voi|d main(v|
|00000a00| 6f 69 64 29 0d 0a 7b 0d | 0a 20 20 20 20 69 6e 74 |oid)..{.|. int|
|00000a10| 20 69 64 3b 0d 0a 20 20 | 20 20 70 74 68 72 65 61 | id;.. | pthrea|
|00000a20| 64 5f 74 20 70 74 68 72 | 65 61 64 31 3b 0d 0a 20 |d_t pthr|ead1;.. |
|00000a30| 20 20 20 70 74 68 72 65 | 61 64 5f 74 20 70 74 68 | pthre|ad_t pth|
|00000a40| 72 65 61 64 32 3b 0d 0a | 20 20 20 20 69 6e 74 20 |read2;..| int |
|00000a50| 74 68 72 65 61 64 69 64 | 31 20 3d 20 31 3b 0d 0a |threadid|1 = 1;..|
|00000a60| 20 20 20 20 69 6e 74 20 | 74 68 72 65 61 64 69 64 | int |threadid|
|00000a70| 32 20 3d 20 32 3b 0d 0a | 0d 0a 20 20 20 20 2f 2f |2 = 2;..|.. //|
|00000a80| 69 6e 69 74 69 61 6c 69 | 7a 65 0d 0a 20 20 20 20 |initiali|ze.. |
|00000a90| 61 6c 6c 65 67 72 6f 5f | 69 6e 69 74 28 29 3b 0d |allegro_|init();.|
|00000aa0| 0a 20 20 20 20 73 65 74 | 5f 63 6f 6c 6f 72 5f 64 |. set|_color_d|
|00000ab0| 65 70 74 68 28 31 36 29 | 3b 0d 0a 20 20 20 20 73 |epth(16)|;.. s|
|00000ac0| 65 74 5f 67 66 78 5f 6d | 6f 64 65 28 4d 4f 44 45 |et_gfx_m|ode(MODE|
|00000ad0| 2c 20 57 49 44 54 48 2c | 20 48 45 49 47 48 54 2c |, WIDTH,| HEIGHT,|
|00000ae0| 20 30 2c 20 30 29 3b 0d | 0a 20 20 20 20 73 72 61 | 0, 0);.|. sra|
|00000af0| 6e 64 28 74 69 6d 65 28 | 4e 55 4c 4c 29 29 3b 0d |nd(time(|NULL));.|
|00000b00| 0a 20 20 20 20 74 65 78 | 74 5f 6d 6f 64 65 28 2d |. tex|t_mode(-|
|00000b10| 31 29 3b 0d 0a 20 20 20 | 20 69 6e 73 74 61 6c 6c |1);.. | install|
|00000b20| 5f 6b 65 79 62 6f 61 72 | 64 28 29 3b 0d 0a 20 20 |_keyboar|d();.. |
|00000b30| 20 20 69 6e 73 74 61 6c | 6c 5f 74 69 6d 65 72 28 | instal|l_timer(|
|00000b40| 29 3b 0d 0a 0d 0a 20 20 | 20 20 2f 2f 63 72 65 61 |);.... | //crea|
|00000b50| 74 65 20 64 6f 75 62 6c | 65 20 62 75 66 66 65 72 |te doubl|e buffer|
|00000b60| 0d 0a 20 20 20 20 62 75 | 66 66 65 72 20 3d 20 63 |.. bu|ffer = c|
|00000b70| 72 65 61 74 65 5f 62 69 | 74 6d 61 70 28 53 43 52 |reate_bi|tmap(SCR|
|00000b80| 45 45 4e 5f 57 2c 53 43 | 52 45 45 4e 5f 48 29 3b |EEN_W,SC|REEN_H);|
|00000b90| 0d 0a 0d 0a 20 20 20 20 | 2f 2f 64 69 73 70 6c 61 |.... |//displa|
|00000ba0| 79 20 74 69 74 6c 65 0d | 0a 20 20 20 20 74 65 78 |y title.|. tex|
|00000bb0| 74 6f 75 74 28 62 75 66 | 66 65 72 2c 20 66 6f 6e |tout(buf|fer, fon|
|00000bc0| 74 2c 20 22 4d 75 6c 74 | 69 54 68 72 65 61 64 20 |t, "Mult|iThread |
|00000bd0| 50 72 6f 67 72 61 6d 20 | 28 45 53 43 20 74 6f 20 |Program |(ESC to |
|00000be0| 71 75 69 74 29 22 2c 20 | 0d 0a 20 20 20 20 20 20 |quit)", |.. |
|00000bf0| 20 20 30 2c 20 30 2c 20 | 57 48 49 54 45 29 3b 0d | 0, 0, |WHITE);.|
|00000c00| 0a 0d 0a 20 20 20 20 2f | 2f 6c 6f 61 64 20 62 61 |... /|/load ba|
|00000c10| 6c 6c 20 73 70 72 69 74 | 65 20 0d 0a 20 20 20 20 |ll sprit|e .. |
|00000c20| 6c 6f 61 64 73 70 72 69 | 74 65 73 28 29 3b 0d 0a |loadspri|tes();..|
|00000c30| 0d 0a 20 20 20 20 2f 2f | 63 72 65 61 74 65 20 74 |.. //|create t|
|00000c40| 68 65 20 74 68 72 65 61 | 64 20 66 6f 72 20 73 70 |he threa|d for sp|
|00000c50| 72 69 74 65 20 30 0d 0a | 20 20 20 20 69 64 20 3d |rite 0..| id =|
|00000c60| 20 70 74 68 72 65 61 64 | 5f 63 72 65 61 74 65 28 | pthread|_create(|
|00000c70| 26 70 74 68 72 65 61 64 | 31 2c 20 4e 55 4c 4c 2c |&pthread|1, NULL,|
|00000c80| 20 74 68 72 65 61 64 31 | 2c 20 28 76 6f 69 64 2a | thread1|, (void*|
|00000c90| 29 26 74 68 72 65 61 64 | 69 64 31 29 3b 0d 0a 0d |)&thread|id1);...|
|00000ca0| 0a 20 20 20 20 2f 2f 63 | 72 65 61 74 65 20 74 68 |. //c|reate th|
|00000cb0| 65 20 74 68 72 65 61 64 | 20 66 6f 72 20 73 70 72 |e thread| for spr|
|00000cc0| 69 74 65 20 31 0d 0a 20 | 20 20 20 69 64 20 3d 20 |ite 1.. | id = |
|00000cd0| 70 74 68 72 65 61 64 5f | 63 72 65 61 74 65 28 26 |pthread_|create(&|
|00000ce0| 70 74 68 72 65 61 64 32 | 2c 20 4e 55 4c 4c 2c 20 |pthread2|, NULL, |
|00000cf0| 74 68 72 65 61 64 32 2c | 20 28 76 6f 69 64 2a 29 |thread2,| (void*)|
|00000d00| 26 74 68 72 65 61 64 69 | 64 32 29 3b 0d 0a 0d 0a |&threadi|d2);....|
|00000d10| 20 20 20 20 2f 2f 6d 61 | 69 6e 20 6c 6f 6f 70 0d | //ma|in loop.|
|00000d20| 0a 20 20 20 20 77 68 69 | 6c 65 20 28 21 6b 65 79 |. whi|le (!key|
|00000d30| 5b 4b 45 59 5f 45 53 43 | 5d 29 0d 0a 20 20 20 20 |[KEY_ESC|]).. |
|00000d40| 7b 0d 0a 20 20 20 20 20 | 20 20 20 2f 2f 6c 6f 63 |{.. | //loc|
|00000d50| 6b 20 74 68 65 20 6d 75 | 74 65 78 20 74 6f 20 70 |k the mu|tex to p|
|00000d60| 72 6f 74 65 63 74 20 64 | 6f 75 62 6c 65 20 62 75 |rotect d|ouble bu|
|00000d70| 66 66 65 72 0d 0a 20 20 | 20 20 20 20 20 20 70 74 |ffer.. | pt|
|00000d80| 68 72 65 61 64 5f 6d 75 | 74 65 78 5f 6c 6f 63 6b |hread_mu|tex_lock|
|00000d90| 28 26 74 68 72 65 61 64 | 73 61 66 65 29 3b 0d 0a |(&thread|safe);..|
|00000da0| 0d 0a 20 20 20 20 20 20 | 20 20 2f 2f 75 70 64 61 |.. | //upda|
|00000db0| 74 65 20 74 68 65 20 73 | 63 72 65 65 6e 0d 0a 20 |te the s|creen.. |
|00000dc0| 20 20 20 20 20 20 20 61 | 63 71 75 69 72 65 5f 73 | a|cquire_s|
|00000dd0| 63 72 65 65 6e 28 29 3b | 0d 0a 20 20 20 20 20 20 |creen();|.. |
|00000de0| 20 20 62 6c 69 74 28 62 | 75 66 66 65 72 2c 73 63 | blit(b|uffer,sc|
|00000df0| 72 65 65 6e 2c 30 2c 30 | 2c 30 2c 30 2c 53 43 52 |reen,0,0|,0,0,SCR|
|00000e00| 45 45 4e 5f 57 2d 31 2c | 53 43 52 45 45 4e 5f 48 |EEN_W-1,|SCREEN_H|
|00000e10| 2d 31 29 3b 0d 0a 20 20 | 20 20 20 20 20 20 72 65 |-1);.. | re|
|00000e20| 6c 65 61 73 65 5f 73 63 | 72 65 65 6e 28 29 3b 0d |lease_sc|reen();.|
|00000e30| 0a 0d 0a 20 20 20 20 20 | 20 20 20 2f 2f 75 6e 6c |... | //unl|
|00000e40| 6f 63 6b 20 74 68 65 20 | 6d 75 74 65 78 0d 0a 20 |ock the |mutex.. |
|00000e50| 20 20 20 20 20 20 20 70 | 74 68 72 65 61 64 5f 6d | p|thread_m|
|00000e60| 75 74 65 78 5f 75 6e 6c | 6f 63 6b 28 26 74 68 72 |utex_unl|ock(&thr|
|00000e70| 65 61 64 73 61 66 65 29 | 3b 0d 0a 0d 0a 20 20 20 |eadsafe)|;.... |
|00000e80| 20 20 20 20 20 72 65 73 | 74 28 31 29 3b 0d 0a 20 | res|t(1);.. |
|00000e90| 20 20 20 7d 0d 0a 0d 0a | 20 20 20 20 2f 2f 74 65 | }....| //te|
|00000ea0| 6c 6c 20 74 68 72 65 61 | 64 73 20 69 74 27 73 20 |ll threa|ds it's |
|00000eb0| 74 69 6d 65 20 74 6f 20 | 71 75 69 74 0d 0a 20 20 |time to |quit.. |
|00000ec0| 20 20 64 6f 6e 65 2b 2b | 3b 0d 0a 20 20 20 20 72 | done++|;.. r|
|00000ed0| 65 73 74 28 31 30 30 29 | 3b 0d 0a 0d 0a 20 20 20 |est(100)|;.... |
|00000ee0| 20 2f 2f 6b 69 6c 6c 20 | 74 68 65 20 6d 75 74 65 | //kill |the mute|
|00000ef0| 78 20 28 74 68 72 65 61 | 64 20 70 72 6f 74 65 63 |x (threa|d protec|
|00000f00| 74 69 6f 6e 29 0d 0a 20 | 20 20 20 70 74 68 72 65 |tion).. | pthre|
|00000f10| 61 64 5f 6d 75 74 65 78 | 5f 64 65 73 74 72 6f 79 |ad_mutex|_destroy|
|00000f20| 28 26 74 68 72 65 61 64 | 73 61 66 65 29 3b 0d 0a |(&thread|safe);..|
|00000f30| 20 20 20 20 0d 0a 20 20 | 20 20 2f 2f 72 65 6d 6f | .. | //remo|
|00000f40| 76 65 20 6f 62 6a 65 63 | 74 73 20 66 72 6f 6d 20 |ve objec|ts from |
|00000f50| 6d 65 6d 6f 72 79 0d 0a | 20 20 20 20 64 65 73 74 |memory..| dest|
|00000f60| 72 6f 79 5f 62 69 74 6d | 61 70 28 62 75 66 66 65 |roy_bitm|ap(buffe|
|00000f70| 72 29 3b 0d 0a 0d 0a 20 | 20 20 20 2f 2f 64 65 6c |r);.... | //del|
|00000f80| 65 74 65 20 73 70 72 69 | 74 65 73 0d 0a 20 20 20 |ete spri|tes.. |
|00000f90| 20 66 6f 72 20 28 6e 3d | 30 3b 20 6e 3c 33 32 3b | for (n=|0; n<32;|
|00000fa0| 20 6e 2b 2b 29 0d 0a 20 | 20 20 20 20 20 20 20 64 | n++).. | d|
|00000fb0| 65 73 74 72 6f 79 5f 62 | 69 74 6d 61 70 28 62 61 |estroy_b|itmap(ba|
|00000fc0| 6c 6c 69 6d 67 5b 6e 5d | 29 3b 0d 0a 0d 0a 20 20 |llimg[n]|);.... |
|00000fd0| 20 20 72 65 74 75 72 6e | 3b 0d 0a 7d 0d 0a 0d 0a | return|;..}....|
|00000fe0| 45 4e 44 5f 4f 46 5f 4d | 41 49 4e 28 29 3b 0d 0a |END_OF_M|AIN();..|
|00000ff0| 0d 0a 0d 0a 0d 0a 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001000| 2b 20 31 3b 0d 0a 20 20 | 20 20 20 20 20 20 62 61 |+ 1;.. | ba|
|00001010| 6c 6c 73 5b 6e 5d 2d 3e | 63 75 72 66 72 61 6d 65 |lls[n]->|curframe|
|00001020| 20 3d 20 72 61 6e 64 28 | 29 20 25 20 33 32 3b 0d | = rand(|) % 32;.|
|00001030| 0a 20 20 20 20 20 20 20 | 20 62 61 6c 6c 73 5b 6e |. | balls[n|
|00001040| 5d 2d 3e 6d 61 78 66 72 | 61 6d 65 20 3d 20 33 31 |]->maxfr|ame = 31|
|00001050| 3b 0d 0a 20 20 20 20 20 | 20 20 20 62 61 6c 6c 73 |;.. | balls|
|00001060| 5b 6e 5d 2d 3e 66 72 61 | 6d 65 63 6f 75 6e 74 20 |[n]->fra|mecount |
|00001070| 3d 20 30 3b 0d 0a 20 20 | 20 20 20 20 20 20 62 61 |= 0;.. | ba|
|00001080| 6c 6c 73 5b 6e 5d 2d 3e | 66 72 61 6d 65 64 65 6c |lls[n]->|framedel|
|00001090| 61 79 20 3d 20 30 3b 0d | 0a 20 20 20 20 20 20 20 |ay = 0;.|. |
|000010a0| 20 62 61 6c 6c 73 5b 6e | 5d 2d 3e 61 6e 69 6d 64 | balls[n|]->animd|
|000010b0| 69 72 20 3d 20 31 3b 0d | 0a 20 20 20 20 7d 0d 0a |ir = 1;.|. }..|
|000010c0| 0d 0a 20 20 20 20 2f 2f | 63 72 65 61 74 65 20 74 |.. //|create t|
|000010d0| 68 65 20 6e 65 77 20 74 | 68 72 65 61 64 0d 0a 20 |he new t|hread.. |
|000010e0| 20 20 20 74 68 72 65 61 | 64 5f 69 64 20 3d 20 70 | threa|d_id = p|
|000010f0| 74 68 72 65 61 64 5f 63 | 72 65 61 74 65 28 26 70 |thread_c|reate(&p|
|00001100| 5f 74 68 72 65 61 64 2c | 20 4e 55 4c 4c 2c 20 74 |_thread,| NULL, t|
|00001110| 68 72 65 61 64 31 2c 20 | 28 76 6f 69 64 2a 29 26 |hread1, |(void*)&|
|00001120| 61 29 3b 0d 0a 0d 0a 0d | 0a 20 20 20 20 2f 2f 67 |a);.....|. //g|
|00001130| 61 6d 65 20 6c 6f 6f 70 | 0d 0a 20 20 20 20 77 68 |ame loop|.. wh|
|00001140| 69 6c 65 20 28 21 6b 65 | 79 5b 4b 45 59 5f 45 53 |ile (!ke|y[KEY_ES|
|00001150| 43 5d 29 0d 0a 20 20 20 | 20 7b 0d 0a 20 20 20 20 |C]).. | {.. |
|00001160| 20 20 20 20 2f 2f 65 72 | 61 73 65 20 74 68 65 20 | //er|ase the |
|00001170| 73 70 72 69 74 65 73 0d | 0a 20 20 20 20 20 20 20 |sprites.|. |
|00001180| 20 66 6f 72 20 28 6e 3d | 30 3b 20 6e 3c 4e 55 4d | for (n=|0; n<NUM|
|00001190| 3b 20 6e 2b 2b 29 0d 0a | 20 20 20 20 20 20 20 20 |; n++)..| |
|000011a0| 20 20 20 20 65 72 61 73 | 65 73 70 72 69 74 65 28 | eras|esprite(|
|000011b0| 62 75 66 66 65 72 2c 20 | 62 61 6c 6c 73 5b 6e 5d |buffer, |balls[n]|
|000011c0| 29 3b 0d 0a 0d 0a 20 20 | 20 20 20 20 20 20 2f 2f |);.... | //|
|000011d0| 75 70 64 61 74 65 20 61 | 6e 64 20 64 72 61 77 20 |update a|nd draw |
|000011e0| 74 68 65 20 73 70 72 69 | 74 65 73 0d 0a 20 20 20 |the spri|tes.. |
|000011f0| 20 20 20 20 20 66 6f 72 | 20 28 6e 3d 30 3b 20 6e | for| (n=0; n|
|00001200| 3c 4e 55 4d 3b 20 6e 2b | 2b 29 0d 0a 20 20 20 20 |<NUM; n+|+).. |
|00001210| 20 20 20 20 7b 0d 0a 20 | 20 20 20 20 20 20 20 20 | {.. | |
|00001220| 20 20 20 75 70 64 61 74 | 65 73 70 72 69 74 65 28 | updat|esprite(|
|00001230| 62 61 6c 6c 73 5b 6e 5d | 29 3b 0d 0a 20 20 20 20 |balls[n]|);.. |
|00001240| 20 20 20 20 20 20 20 20 | 62 6f 75 6e 63 65 73 70 | |bouncesp|
|00001250| 72 69 74 65 28 62 61 6c | 6c 73 5b 6e 5d 29 3b 0d |rite(bal|ls[n]);.|
|00001260| 0a 20 20 20 20 20 20 20 | 20 20 20 20 20 64 72 61 |. | dra|
|00001270| 77 5f 73 70 72 69 74 65 | 28 62 75 66 66 65 72 2c |w_sprite|(buffer,|
|00001280| 20 62 61 6c 6c 69 6d 67 | 5b 62 61 6c 6c 73 5b 6e | ballimg|[balls[n|
|00001290| 5d 2d 3e 63 75 72 66 72 | 61 6d 65 5d 2c 20 0d 0a |]->curfr|ame], ..|
|000012a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000012b0| 62 61 6c 6c 73 5b 6e 5d | 2d 3e 78 2c 20 62 61 6c |balls[n]|->x, bal|
|000012c0| 6c 73 5b 6e 5d 2d 3e 79 | 29 3b 0d 0a 20 20 20 20 |ls[n]->y|);.. |
|000012d0| 20 20 20 20 7d 0d 0a 0d | 0a 20 20 20 20 20 20 20 | }...|. |
|000012e0| 20 2f 2f 75 70 64 61 74 | 65 20 74 68 65 20 73 63 | //updat|e the sc|
|000012f0| 72 65 65 6e 0d 0a 20 20 | 20 20 20 20 20 20 61 63 |reen.. | ac|
|00001300| 71 75 69 72 65 5f 73 63 | 72 65 65 6e 28 29 3b 0d |quire_sc|reen();.|
|00001310| 0a 20 20 20 20 20 20 20 | 20 62 6c 69 74 28 62 75 |. | blit(bu|
|00001320| 66 66 65 72 2c 73 63 72 | 65 65 6e 2c 30 2c 30 2c |ffer,scr|een,0,0,|
|00001330| 30 2c 30 2c 53 43 52 45 | 45 4e 5f 57 2d 31 2c 53 |0,0,SCRE|EN_W-1,S|
|00001340| 43 52 45 45 4e 5f 48 2d | 31 29 3b 0d 0a 20 20 20 |CREEN_H-|1);.. |
|00001350| 20 20 20 20 20 72 65 6c | 65 61 73 65 5f 73 63 72 | rel|ease_scr|
|00001360| 65 65 6e 28 29 3b 0d 0a | 0d 0a 20 20 20 20 20 20 |een();..|.. |
|00001370| 20 20 2f 2f 73 6c 6f 77 | 20 74 68 65 20 67 61 6d | //slow| the gam|
|00001380| 65 20 64 6f 77 6e 0d 0a | 20 20 20 20 20 20 20 20 |e down..| |
|00001390| 72 65 73 74 28 38 29 3b | 0d 0a 20 20 20 20 7d 0d |rest(8);|.. }.|
|000013a0| 0a 0d 0a 20 20 20 20 2f | 2f 74 65 6c 6c 20 74 68 |... /|/tell th|
|000013b0| 72 65 61 64 20 69 74 27 | 73 20 74 69 6d 65 20 74 |read it'|s time t|
|000013c0| 6f 20 71 75 69 74 0d 0a | 20 20 20 20 64 6f 6e 65 |o quit..| done|
|000013d0| 2b 2b 3b 0d 0a 20 20 20 | 20 72 65 73 74 28 31 30 |++;.. | rest(10|
|000013e0| 30 30 29 3b 0d 0a 0d 0a | 20 20 20 20 2f 2f 6b 69 |00);....| //ki|
|000013f0| 6c 6c 20 74 68 65 20 6d | 75 74 65 78 20 28 74 68 |ll the m|utex (th|
+--------+-------------------------+-------------------------+--------+--------+