home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1996-02-19 | 6.6 KB | [TEXT/CWIE] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Mon Feb 19 22:27:02 1996, modified Mon Feb 19 22:27:02 1996, creator 'CWIE', type ASCII, 6085 bytes "Semaphores.h" , at 0x1845 410 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [CWIE] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0c 53 65 6d 61 70 68 | 6f 72 65 73 2e 68 00 00 |..Semaph|ores.h..|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 43 57 49 | 45 01 00 00 00 00 00 00 |.TEXTCWI|E.......|
|00000050| 00 00 00 00 00 17 c5 00 | 00 01 9a ad 4e f0 06 ad |........|....N...|
|00000060| 4e f0 06 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |N.......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 27 0a 00 00 |........|....'...|
|00000080| 23 69 66 6e 64 65 66 20 | 5f 5f 53 45 4d 41 50 48 |#ifndef |__SEMAPH|
|00000090| 4f 52 45 53 5f 5f 0d 23 | 64 65 66 69 6e 65 20 5f |ORES__.#|define _|
|000000a0| 5f 53 45 4d 41 50 48 4f | 52 45 53 5f 5f 0d 0d 23 |_SEMAPHO|RES__..#|
|000000b0| 69 66 6e 64 65 66 20 5f | 5f 54 48 52 45 41 44 53 |ifndef _|_THREADS|
|000000c0| 5f 5f 0d 23 69 6e 63 6c | 75 64 65 20 3c 54 68 72 |__.#incl|ude <Thr|
|000000d0| 65 61 64 73 2e 68 3e 0d | 23 65 6e 64 69 66 0d 0d |eads.h>.|#endif..|
|000000e0| 2f 2f 0d 2f 2f 20 43 6f | 6e 76 65 6e 69 65 6e 63 |//.// Co|nvenienc|
|000000f0| 65 20 72 6f 75 74 69 6e | 65 73 0d 2f 2f 0d 42 6f |e routin|es.//.Bo|
|00000100| 6f 6c 65 61 6e 20 54 69 | 6d 65 45 78 70 69 72 65 |olean Ti|meExpire|
|00000110| 64 28 75 6e 73 69 67 6e | 65 64 20 6c 6f 6e 67 20 |d(unsign|ed long |
|00000120| 63 75 72 72 65 6e 74 54 | 69 6d 65 2c 20 75 6e 73 |currentT|ime, uns|
|00000130| 69 67 6e 65 64 20 6c 6f | 6e 67 20 73 74 61 72 74 |igned lo|ng start|
|00000140| 54 69 6d 65 2c 20 75 6e | 73 69 67 6e 65 64 20 6c |Time, un|signed l|
|00000150| 6f 6e 67 20 73 74 6f 70 | 54 69 6d 65 29 3b 0d 75 |ong stop|Time);.u|
|00000160| 6e 73 69 67 6e 65 64 20 | 6c 6f 6e 67 20 43 6c 6f |nsigned |long Clo|
|00000170| 73 65 72 54 69 63 6b 28 | 75 6e 73 69 67 6e 65 64 |serTick(|unsigned|
|00000180| 20 6c 6f 6e 67 20 63 75 | 72 72 65 6e 74 54 69 6d | long cu|rrentTim|
|00000190| 65 2c 20 75 6e 73 69 67 | 6e 65 64 20 6c 6f 6e 67 |e, unsig|ned long|
|000001a0| 20 74 69 63 6b 31 2c 20 | 75 6e 73 69 67 6e 65 64 | tick1, |unsigned|
|000001b0| 20 6c 6f 6e 67 20 74 69 | 63 6b 32 29 3b 0d 0d 2f | long ti|ck2);../|
|000001c0| 2f 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |/=======|========|
|000001d0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000001e0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000001f0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000200| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000210| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 0d 2f 2f 20 43 4c 41 |========|=.// CLA|
|00000220| 53 53 20 54 54 68 72 65 | 61 64 49 44 51 75 65 75 |SS TThre|adIDQueu|
|00000230| 65 0d 2f 2f 0d 2f 2f 20 | 4b 65 65 70 20 74 72 61 |e.//.// |Keep tra|
|00000240| 63 6b 20 6f 66 20 61 20 | 71 75 65 75 65 20 6f 66 |ck of a |queue of|
|00000250| 20 54 68 72 65 61 64 49 | 44 73 0d 2f 2f 3d 3d 3d | ThreadI|Ds.//===|
|00000260| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000270| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000280| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000290| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000002a0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000002b0| 3d 3d 3d 3d 3d 0d 0d 63 | 6c 61 73 73 20 54 54 68 |=====..c|lass TTh|
|000002c0| 72 65 61 64 49 44 51 75 | 65 75 65 0d 7b 0d 70 75 |readIDQu|eue.{.pu|
|000002d0| 62 6c 69 63 3a 0d 09 09 | 09 09 09 54 54 68 72 65 |blic:...|...TThre|
|000002e0| 61 64 49 44 51 75 65 75 | 65 28 29 20 3a 20 66 54 |adIDQueu|e() : fT|
|000002f0| 68 72 65 61 64 43 6f 75 | 6e 74 28 30 29 2c 20 66 |hreadCou|nt(0), f|
|00000300| 52 65 73 65 72 76 65 64 | 53 70 61 63 65 28 30 29 |Reserved|Space(0)|
|00000310| 2c 20 66 54 68 72 65 61 | 64 51 75 65 75 65 28 6e |, fThrea|dQueue(n|
|00000320| 69 6c 29 20 7b 7d 3b 0d | 09 09 09 09 09 7e 54 54 |il) {};.|.....~TT|
|00000330| 68 72 65 61 64 49 44 51 | 75 65 75 65 28 29 3b 0d |hreadIDQ|ueue();.|
|00000340| 09 0d 09 4f 53 45 72 72 | 09 09 09 45 6e 71 75 65 |...OSErr|...Enque|
|00000350| 75 65 28 54 68 72 65 61 | 64 49 44 20 74 68 72 65 |ue(Threa|dID thre|
|00000360| 61 64 54 6f 41 64 64 29 | 3b 0d 09 54 68 72 65 61 |adToAdd)|;..Threa|
|00000370| 64 49 44 09 09 44 65 71 | 75 65 75 65 28 29 3b 0d |dID..Deq|ueue();.|
|00000380| 09 6c 6f 6e 67 09 09 09 | 51 75 65 75 65 64 54 68 |.long...|QueuedTh|
|00000390| 72 65 61 64 73 28 29 20 | 7b 20 72 65 74 75 72 6e |reads() |{ return|
|000003a0| 20 66 54 68 72 65 61 64 | 43 6f 75 6e 74 3b 20 7d | fThread|Count; }|
|000003b0| 0d 09 0d 70 72 69 76 61 | 74 65 3a 0d 09 4f 53 45 |...priva|te:..OSE|
|000003c0| 72 72 09 09 09 49 6e 73 | 75 72 65 54 68 72 65 61 |rr...Ins|ureThrea|
|000003d0| 64 51 75 65 75 65 48 61 | 73 46 72 65 65 53 70 61 |dQueueHa|sFreeSpa|
|000003e0| 63 65 28 29 3b 0d 0d 09 | 6c 6f 6e 67 09 09 09 66 |ce();...|long...f|
|000003f0| 54 68 72 65 61 64 43 6f | 75 6e 74 3b 0d 09 6c 6f |ThreadCo|unt;..lo|
|00000400| 6e 67 09 09 09 66 52 65 | 73 65 72 76 65 64 53 70 |ng...fRe|servedSp|
|00000410| 61 63 65 3b 0d 09 54 68 | 72 65 61 64 49 44 2a 2a |ace;..Th|readID**|
|00000420| 09 09 66 54 68 72 65 61 | 64 51 75 65 75 65 3b 0d |..fThrea|dQueue;.|
|00000430| 7d 3b 0d 0d 65 6e 75 6d | 0d 7b 0d 09 6b 41 6e 79 |};..enum|.{..kAny|
|00000440| 53 65 6d 61 70 68 6f 72 | 65 49 44 20 3d 20 30 2c |Semaphor|eID = 0,|
|00000450| 0d 09 6b 4e 65 76 65 72 | 54 69 6d 65 6f 75 74 53 |..kNever|TimeoutS|
|00000460| 65 6d 61 70 68 6f 72 65 | 20 3d 20 30 78 37 46 46 |emaphore| = 0x7FF|
|00000470| 46 46 46 46 46 0d 7d 3b | 0d 0d 2f 2f 3d 3d 3d 3d |FFFFF.};|..//====|
|00000480| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000490| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000004a0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000004b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000004c0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000004d0| 3d 3d 3d 3d 0d 2f 2f 20 | 43 4c 41 53 53 20 54 53 |====.// |CLASS TS|
|000004e0| 65 6d 61 70 68 6f 72 65 | 0d 2f 2f 0d 2f 2f 20 41 |emaphore|.//.// A|
|000004f0| 20 73 65 6d 61 70 68 6f | 72 65 20 63 6f 6e 73 69 | semapho|re consi|
|00000500| 73 74 73 20 6f 66 20 61 | 6e 20 6f 77 6e 65 72 20 |sts of a|n owner |
|00000510| 74 68 72 65 61 64 20 61 | 6e 64 20 61 20 6c 69 73 |thread a|nd a lis|
|00000520| 74 20 6f 66 20 62 6c 6f | 63 6b 65 64 20 74 68 72 |t of blo|cked thr|
|00000530| 65 61 64 73 20 77 61 69 | 74 69 6e 67 20 74 6f 0d |eads wai|ting to.|
|00000540| 2f 2f 20 62 65 63 6f 6d | 65 20 74 68 65 20 6f 77 |// becom|e the ow|
|00000550| 6e 65 72 2e 20 20 57 68 | 65 6e 20 74 68 65 20 73 |ner. Wh|en the s|
|00000560| 65 6d 61 70 68 6f 72 65 | 20 69 73 20 63 72 65 61 |emaphore| is crea|
|00000570| 74 65 64 2c 20 69 74 73 | 20 72 65 73 6f 75 72 63 |ted, its| resourc|
|00000580| 65 20 63 6f 75 6e 74 20 | 69 73 20 73 70 65 63 69 |e count |is speci|
|00000590| 66 69 65 64 0d 2f 2f 20 | 74 6f 20 62 65 20 65 69 |fied.// |to be ei|
|000005a0| 74 68 65 72 20 30 20 6f | 72 20 31 20 28 6c 61 72 |ther 0 o|r 1 (lar|
|000005b0| 67 65 72 20 6e 75 6d 62 | 65 72 73 20 63 6f 75 6c |ger numb|ers coul|
|000005c0| 64 20 62 65 20 73 75 70 | 70 6f 72 74 65 64 20 69 |d be sup|ported i|
|000005d0| 66 20 61 20 6c 69 73 74 | 20 6f 66 20 6f 77 6e 69 |f a list| of owni|
|000005e0| 6e 67 20 74 68 72 65 61 | 64 73 0d 2f 2f 20 77 61 |ng threa|ds.// wa|
|000005f0| 73 20 6b 65 70 74 29 2e | 0d 2f 2f 0d 2f 2f 20 20 |s kept).|.//.// |
|00000600| 41 20 74 68 72 65 61 64 | 20 72 65 71 75 65 73 74 |A thread| request|
|00000610| 73 20 74 6f 20 62 65 63 | 6f 6d 65 20 74 68 65 20 |s to bec|ome the |
|00000620| 6f 77 6e 65 72 20 62 79 | 20 63 61 6c 6c 69 6e 67 |owner by| calling|
|00000630| 20 47 72 61 62 2c 20 61 | 6e 64 20 72 65 6c 69 6e | Grab, a|nd relin|
|00000640| 71 75 69 73 68 65 73 0d | 2f 2f 20 6f 77 6e 65 72 |quishes.|// owner|
|00000650| 73 68 69 70 20 62 79 20 | 63 61 6c 6c 69 6e 67 20 |ship by |calling |
|00000660| 52 65 6c 65 61 73 65 2e | 20 20 4e 6f 6e 2d 74 68 |Release.| Non-th|
|00000670| 72 65 61 64 73 20 63 61 | 6e 20 67 65 74 20 6f 77 |reads ca|n get ow|
|00000680| 6e 65 72 73 68 69 70 20 | 6f 66 20 74 68 65 20 73 |nership |of the s|
|00000690| 65 6d 61 70 68 6f 72 65 | 20 62 79 20 0d 2f 2f 20 |emaphore| by .// |
|000006a0| 63 61 6c 6c 69 6e 67 20 | 53 65 74 41 76 61 69 6c |calling |SetAvail|
|000006b0| 61 62 6c 65 28 66 61 6c | 73 65 29 3b 20 69 6e 20 |able(fal|se); in |
|000006c0| 74 68 69 73 20 63 61 73 | 65 20 65 76 65 6e 20 74 |this cas|e even t|
|000006d0| 68 6f 75 67 68 20 66 4f | 77 6e 69 6e 67 54 68 72 |hough fO|wningThr|
|000006e0| 65 61 64 20 77 69 6c 6c | 20 62 65 20 6e 69 6c 2c |ead will| be nil,|
|000006f0| 20 74 68 65 20 0d 2f 2f | 20 73 65 6d 61 70 68 6f | the .//| semapho|
|00000700| 72 65 20 77 69 6c 6c 20 | 73 74 69 6c 6c 20 77 6f |re will |still wo|
|00000710| 72 6b 20 63 6f 72 72 65 | 63 74 6c 79 20 62 65 63 |rk corre|ctly bec|
|00000720| 61 75 73 65 20 66 41 76 | 61 69 6c 61 62 6c 65 20 |ause fAv|ailable |
|00000730| 69 73 20 66 61 6c 73 65 | 20 61 6e 64 20 74 68 75 |is false| and thu|
|00000740| 73 20 6f 74 68 65 72 20 | 74 68 72 65 61 64 73 0d |s other |threads.|
|00000750| 2f 2f 20 74 68 61 74 20 | 67 72 61 62 20 74 68 65 |// that |grab the|
|00000760| 20 73 65 6d 61 70 68 6f | 72 65 20 77 69 6c 6c 20 | semapho|re will |
|00000770| 62 6c 6f 63 6b 20 61 73 | 20 74 68 65 79 20 73 68 |block as| they sh|
|00000780| 6f 75 6c 64 2e 0d 2f 2f | 0d 2f 2f 20 53 65 6d 61 |ould..//|.// Sema|
|00000790| 70 68 6f 72 65 73 20 61 | 72 65 20 6c 69 6e 6b 65 |phores a|re linke|
|000007a0| 64 20 69 6e 74 6f 20 61 | 20 67 6c 6f 62 61 6c 20 |d into a| global |
|000007b0| 6c 69 73 74 20 6f 66 20 | 61 6c 6c 20 73 65 6d 61 |list of |all sema|
|000007c0| 70 68 6f 72 65 73 20 75 | 70 6f 6e 20 63 72 65 61 |phores u|pon crea|
|000007d0| 74 69 6f 6e 20 61 6e 64 | 20 72 65 6d 6f 76 65 64 |tion and| removed|
|000007e0| 0d 2f 2f 20 75 70 6f 6e | 20 64 65 6c 65 74 69 6f |.// upon| deletio|
|000007f0| 6e 2e 20 20 45 61 63 68 | 20 73 65 6d 61 70 68 6f |n. Each| semapho|
|00000800| 72 65 20 68 61 73 20 61 | 20 75 6e 69 71 75 65 20 |re has a| unique |
|00000810| 49 44 20 28 67 65 6e 65 | 72 61 74 65 64 20 62 79 |ID (gene|rated by|
|00000820| 20 61 20 73 74 61 74 69 | 63 20 6d 65 74 68 6f 64 | a stati|c method|
|00000830| 29 2c 20 61 6e 64 0d 2f | 2f 20 74 68 65 20 67 6c |), and./|/ the gl|
|00000840| 6f 62 61 6c 20 6c 69 73 | 74 20 63 61 6e 20 62 65 |obal lis|t can be|
|00000850| 20 73 65 61 72 63 68 65 | 64 20 66 6f 72 20 61 20 | searche|d for a |
|00000860| 67 69 76 65 6e 20 49 44 | 20 28 76 69 61 20 61 6e |given ID| (via an|
|00000870| 6f 74 68 65 72 20 73 74 | 61 74 69 63 20 6d 65 74 |other st|atic met|
|00000880| 68 6f 64 29 2e 0d 2f 2f | 3d 3d 3d 3d 3d 3d 3d 3d |hod)..//|========|
|00000890| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000008a0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000008b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000008c0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000008d0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000008e0| 0d 0d 63 6c 61 73 73 20 | 54 53 65 6d 61 70 68 6f |..class |TSemapho|
|000008f0| 72 65 0d 7b 0d 09 0d 2f | 2f 20 2d 2d 2d 20 4d 65 |re.{.../|/ --- Me|
|00000900| 74 68 6f 64 73 20 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |thods --|--------|
|00000910| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000920| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000930| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000940| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000950| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0d 0d 70 75 62 |--------|---..pub|
|00000960| 6c 69 63 3a 0d 09 09 09 | 09 09 09 09 54 53 65 6d |lic:....|....TSem|
|00000970| 61 70 68 6f 72 65 28 6c | 6f 6e 67 20 72 65 73 6f |aphore(l|ong reso|
|00000980| 75 72 63 65 43 6f 75 6e | 74 20 3d 20 31 2c 20 6c |urceCoun|t = 1, l|
|00000990| 6f 6e 67 20 73 65 6d 61 | 70 68 6f 72 65 49 44 20 |ong sema|phoreID |
|000009a0| 3d 20 6b 41 6e 79 53 65 | 6d 61 70 68 6f 72 65 49 |= kAnySe|maphoreI|
|000009b0| 44 29 3b 0d 70 72 6f 74 | 65 63 74 65 64 3a 0d 09 |D);.prot|ected:..|
|000009c0| 76 69 72 74 75 61 6c 09 | 09 09 09 09 7e 54 53 65 |virtual.|....~TSe|
|000009d0| 6d 61 70 68 6f 72 65 28 | 29 3b 0d 0d 70 75 62 6c |maphore(|);..publ|
|000009e0| 69 63 3a 0d 09 73 74 61 | 74 69 63 09 76 6f 69 64 |ic:..sta|tic.void|
|000009f0| 09 09 09 49 6e 69 74 69 | 61 6c 69 7a 65 47 6c 6f |...Initi|alizeGlo|
|00000a00| 62 61 6c 73 28 29 3b 0d | 09 73 74 61 74 69 63 09 |bals();.|.static.|
|00000a10| 6c 6f 6e 67 09 09 09 4e | 65 77 55 6e 69 71 75 65 |long...N|ewUnique|
|00000a20| 53 65 6d 61 70 68 6f 72 | 65 49 44 28 29 3b 0d 09 |Semaphor|eID();..|
|00000a30| 73 74 61 74 69 63 09 54 | 53 65 6d 61 70 68 6f 72 |static.T|Semaphor|
|00000a40| 65 2a 09 09 46 69 6e 64 | 53 65 6d 61 70 68 6f 72 |e*..Find|Semaphor|
|00000a50| 65 28 6c 6f 6e 67 20 73 | 65 6d 61 70 68 6f 72 65 |e(long s|emaphore|
|00000a60| 49 44 2c 20 42 6f 6f 6c | 65 61 6e 20 63 72 65 61 |ID, Bool|ean crea|
|00000a70| 74 65 49 66 4e 6f 74 46 | 6f 75 6e 64 20 3d 20 66 |teIfNotF|ound = f|
|00000a80| 61 6c 73 65 2c 20 6c 6f | 6e 67 20 72 65 73 6f 75 |alse, lo|ng resou|
|00000a90| 72 63 65 43 6f 75 6e 74 | 20 3d 20 31 29 3b 0d 09 |rceCount| = 1);..|
|00000aa0| 73 74 61 74 69 63 09 76 | 6f 69 64 09 09 09 49 64 |static.v|oid...Id|
|00000ab0| 6c 65 28 29 3b 0d 09 73 | 74 61 74 69 63 09 76 6f |le();..s|tatic.vo|
|00000ac0| 69 64 09 09 09 54 68 72 | 65 61 64 44 69 65 64 28 |id...Thr|eadDied(|
|00000ad0| 54 68 72 65 61 64 49 44 | 20 74 68 72 65 61 64 49 |ThreadID| threadI|
|00000ae0| 44 29 3b 0d 09 73 74 61 | 74 69 63 09 76 6f 69 64 |D);..sta|tic.void|
|00000af0| 09 09 09 53 65 74 44 65 | 66 61 75 6c 74 54 69 6d |...SetDe|faultTim|
|00000b00| 65 6f 75 74 28 6c 6f 6e | 67 20 6e 65 77 44 65 66 |eout(lon|g newDef|
|00000b10| 61 75 6c 74 29 3b 0d 09 | 73 74 61 74 69 63 09 76 |ault);..|static.v|
|00000b20| 6f 69 64 09 09 09 53 65 | 74 44 65 66 61 75 6c 74 |oid...Se|tDefault|
|00000b30| 4d 61 78 57 61 69 74 28 | 6c 6f 6e 67 20 6e 65 77 |MaxWait(|long new|
|00000b40| 4d 61 78 57 61 69 74 29 | 3b 0d 09 0d 09 09 09 76 |MaxWait)|;......v|
|00000b50| 6f 69 64 09 09 09 52 65 | 6c 65 61 73 65 52 65 66 |oid...Re|leaseRef|
|00000b60| 65 72 65 6e 63 65 28 29 | 3b 0d 09 09 09 76 6f 69 |erence()|;....voi|
|00000b70| 64 09 09 09 44 69 73 70 | 6f 73 65 28 29 3b 0d 09 |d...Disp|ose();..|
|00000b80| 09 09 6c 6f 6e 67 09 09 | 09 53 65 6d 61 70 68 6f |..long..|.Semapho|
|00000b90| 72 65 49 44 28 29 20 63 | 6f 6e 73 74 3b 0d 0d 09 |reID() c|onst;...|
|00000ba0| 09 09 4f 53 45 72 72 09 | 09 09 47 72 61 62 28 54 |..OSErr.|..Grab(T|
|00000bb0| 68 72 65 61 64 49 44 20 | 74 68 72 65 61 64 49 44 |hreadID |threadID|
|00000bc0| 20 3d 20 6b 43 75 72 72 | 65 6e 74 54 68 72 65 61 | = kCurr|entThrea|
|00000bd0| 64 49 44 29 3b 0d 09 09 | 09 76 6f 69 64 09 09 09 |dID);...|.void...|
|00000be0| 52 65 6c 65 61 73 65 28 | 54 68 72 65 61 64 49 44 |Release(|ThreadID|
|00000bf0| 20 74 68 72 65 61 64 49 | 44 20 3d 20 6b 43 75 72 | threadI|D = kCur|
|00000c00| 72 65 6e 74 54 68 72 65 | 61 64 49 44 29 3b 0d 09 |rentThre|adID);..|
|00000c10| 09 09 54 68 72 65 61 64 | 49 44 09 09 52 65 6c 65 |..Thread|ID..Rele|
|00000c20| 61 73 65 4f 6e 65 54 68 | 72 65 61 64 28 29 3b 0d |aseOneTh|read();.|
|00000c30| 09 09 09 76 6f 69 64 09 | 09 09 52 65 6c 65 61 73 |...void.|..Releas|
|00000c40| 65 41 6c 6c 54 68 72 65 | 61 64 73 28 29 3b 0d 09 |eAllThre|ads();..|
|00000c50| 09 09 42 6f 6f 6c 65 61 | 6e 09 09 09 41 76 61 69 |..Boolea|n...Avai|
|00000c60| 6c 61 62 6c 65 28 29 20 | 63 6f 6e 73 74 3b 0d 09 |lable() |const;..|
|00000c70| 09 09 76 6f 69 64 09 09 | 09 53 65 74 41 76 61 69 |..void..|.SetAvai|
|00000c80| 6c 61 62 6c 65 28 42 6f | 6f 6c 65 61 6e 29 3b 0d |lable(Bo|olean);.|
|00000c90| 09 09 09 0d 09 09 09 76 | 6f 69 64 09 09 09 52 65 |.......v|oid...Re|
|00000ca0| 73 65 74 54 69 6d 65 6f | 75 74 54 69 6d 65 72 28 |setTimeo|utTimer(|
|00000cb0| 29 3b 0d 09 09 09 76 6f | 69 64 09 09 09 41 64 64 |);....vo|id...Add|
|00000cc0| 47 72 61 63 65 50 65 72 | 69 6f 64 28 6c 6f 6e 67 |GracePer|iod(long|
|00000cd0| 20 67 72 61 63 65 50 65 | 72 69 6f 64 29 3b 0d 09 | gracePe|riod);..|
|00000ce0| 09 09 76 6f 69 64 09 09 | 09 53 65 74 53 65 6d 61 |..void..|.SetSema|
|00000cf0| 70 68 6f 72 65 54 69 6d | 6f 75 74 56 61 6c 75 65 |phoreTim|outValue|
|00000d00| 28 6c 6f 6e 67 20 74 69 | 6d 65 6f 75 74 56 61 6c |(long ti|meoutVal|
|00000d10| 75 65 29 3b 0d 09 09 09 | 76 6f 69 64 09 09 09 53 |ue);....|void...S|
|00000d20| 65 74 53 65 6d 61 70 68 | 6f 72 65 4d 61 78 57 61 |etSemaph|oreMaxWa|
|00000d30| 69 74 54 69 6d 65 28 6c | 6f 6e 67 20 74 69 6d 65 |itTime(l|ong time|
|00000d40| 6f 75 74 56 61 6c 75 65 | 29 3b 0d 09 09 09 6c 6f |outValue|);....lo|
|00000d50| 6e 67 09 09 09 53 65 6d | 61 70 68 6f 72 65 54 69 |ng...Sem|aphoreTi|
|00000d60| 6d 6f 75 74 56 61 6c 75 | 65 28 29 20 7b 20 72 65 |moutValu|e() { re|
|00000d70| 74 75 72 6e 20 66 53 65 | 6d 61 70 68 6f 72 65 54 |turn fSe|maphoreT|
|00000d80| 69 6d 65 6f 75 74 56 61 | 6c 75 65 3b 20 7d 0d 09 |imeoutVa|lue; }..|
|00000d90| 09 09 6c 6f 6e 67 09 09 | 09 53 65 6d 61 70 68 6f |..long..|.Semapho|
|00000da0| 72 65 4d 61 78 57 61 69 | 74 54 69 6d 65 28 29 20 |reMaxWai|tTime() |
|00000db0| 7b 20 72 65 74 75 72 6e | 20 66 53 65 6d 61 70 68 |{ return| fSemaph|
|00000dc0| 6f 72 65 4d 61 78 57 61 | 69 74 54 69 6d 65 3b 20 |oreMaxWa|itTime; |
|00000dd0| 7d 0d 09 09 09 0d 09 09 | 09 75 6e 73 69 67 6e 65 |}.......|.unsigne|
|00000de0| 64 20 6c 6f 6e 67 09 54 | 69 6d 65 6f 75 74 54 69 |d long.T|imeoutTi|
|00000df0| 63 6b 28 29 3b 0d 09 09 | 09 42 6f 6f 6c 65 61 6e |ck();...|.Boolean|
|00000e00| 09 09 09 43 68 65 63 6b | 49 66 54 69 6d 65 72 45 |...Check|IfTimerE|
|00000e10| 78 70 69 72 65 64 28 75 | 6e 73 69 67 6e 65 64 20 |xpired(u|nsigned |
|00000e20| 6c 6f 6e 67 20 63 75 72 | 72 65 6e 74 54 69 6d 65 |long cur|rentTime|
|00000e30| 29 3b 0d 09 09 09 76 6f | 69 64 09 09 09 53 65 6d |);....vo|id...Sem|
|00000e40| 61 70 68 6f 72 65 54 69 | 6d 65 64 4f 75 74 28 29 |aphoreTi|medOut()|
|00000e50| 3b 0d 09 09 09 0d 70 72 | 6f 74 65 63 74 65 64 3a |;.....pr|otected:|
|00000e60| 0d 09 09 09 76 6f 69 64 | 09 09 09 52 65 6d 6f 76 |....void|...Remov|
|00000e70| 65 46 72 6f 6d 47 6c 6f | 62 61 6c 53 65 6d 61 70 |eFromGlo|balSemap|
|00000e80| 68 6f 72 65 4c 69 73 74 | 28 29 3b 0d 09 09 09 0d |horeList|();.....|
|00000e90| 2f 2f 20 2d 2d 2d 20 46 | 69 65 6c 64 73 20 2d 2d |// --- F|ields --|
|00000ea0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000eb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000ec0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000ed0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000ee0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000ef0| 2d 2d 2d 0d 0d 70 72 69 | 76 61 74 65 3a 0d 09 73 |---..pri|vate:..s|
|00000f00| 74 61 74 69 63 09 54 53 | 65 6d 61 70 68 6f 72 65 |tatic.TS|emaphore|
|00000f10| 2a 09 09 67 46 69 72 73 | 74 53 65 6d 61 70 68 6f |*..gFirs|tSemapho|
|00000f20| 72 65 3b 09 09 09 2f 2f | 20 50 6f 69 6e 74 65 72 |re;...//| Pointer|
|00000f30| 20 74 6f 20 74 68 65 20 | 66 69 72 73 74 20 73 65 | to the |first se|
|00000f40| 6d 61 70 68 6f 72 65 20 | 69 6e 20 74 68 65 20 67 |maphore |in the g|
|00000f50| 6c 6f 62 61 6c 20 6c 69 | 73 74 20 6f 66 20 61 6c |lobal li|st of al|
|00000f60| 6c 20 73 65 6d 61 70 68 | 6f 72 65 73 0d 09 73 74 |l semaph|ores..st|
|00000f70| 61 74 69 63 09 6c 6f 6e | 67 09 09 09 67 53 65 6d |atic.lon|g...gSem|
|00000f80| 61 70 68 6f 72 65 49 44 | 53 65 71 75 65 6e 63 65 |aphoreID|Sequence|
|00000f90| 3b 09 09 2f 2f 20 54 68 | 65 20 6e 65 78 74 20 61 |;..// Th|e next a|
|00000fa0| 76 61 69 6c 61 62 6c 65 | 20 73 65 6d 61 70 68 6f |vailable| semapho|
|00000fb0| 72 65 20 49 44 20 28 75 | 73 65 64 20 66 6f 72 20 |re ID (u|sed for |
|00000fc0| 61 73 73 69 67 6e 69 6e | 67 20 75 6e 69 71 75 65 |assignin|g unique|
|00000fd0| 20 49 44 73 29 0d 09 73 | 74 61 74 69 63 09 6c 6f | IDs)..s|tatic.lo|
|00000fe0| 6e 67 09 09 09 67 53 65 | 6d 61 70 68 6f 72 65 44 |ng...gSe|maphoreD|
|00000ff0| 65 66 61 75 6c 74 54 69 | 6d 65 6f 75 74 3b 09 2f |efaultTi|meout;./|
|00001000| 2f 20 44 65 66 61 75 6c | 74 20 74 69 6d 65 20 74 |/ Defaul|t time t|
|00001010| 6f 20 77 61 69 74 20 62 | 65 66 6f 72 65 20 74 69 |o wait b|efore ti|
|00001020| 6d 69 6e 67 20 6f 75 74 | 0d 09 73 74 61 74 69 63 |ming out|..static|
|00001030| 09 6c 6f 6e 67 09 09 09 | 67 53 65 6d 61 70 68 6f |.long...|gSemapho|
|00001040| 72 65 44 65 66 61 75 6c | 74 4d 61 78 57 61 69 74 |reDefaul|tMaxWait|
|00001050| 3b 09 2f 2f 20 44 65 66 | 61 75 6c 74 20 6d 61 78 |;.// Def|ault max|
|00001060| 69 6d 75 6d 20 74 69 6d | 65 20 74 6f 20 77 61 69 |imum tim|e to wai|
|00001070| 74 20 28 65 78 63 6c 75 | 73 69 76 65 20 6f 66 20 |t (exclu|sive of |
|00001080| 74 69 6d 65 72 20 72 65 | 73 65 74 73 29 0d 09 73 |timer re|sets)..s|
|00001090| 74 61 74 69 63 09 75 6e | 73 69 67 6e 65 64 20 6c |tatic.un|signed l|
|000010a0| 6f 6e 67 09 67 4c 61 73 | 74 54 69 6d 65 6f 75 74 |ong.gLas|tTimeout|
|000010b0| 54 65 73 74 3b 09 09 09 | 2f 2f 20 54 68 65 20 6c |Test;...|// The l|
|000010c0| 61 73 74 20 74 69 63 6b | 20 74 68 61 74 20 77 65 |ast tick| that we|
|000010d0| 20 6c 6f 6f 6b 65 64 20 | 66 6f 72 20 74 69 6d 65 | looked |for time|
|000010e0| 64 2d 6f 75 74 20 73 65 | 6d 61 70 68 6f 72 65 73 |d-out se|maphores|
|000010f0| 0d 09 73 74 61 74 69 63 | 09 75 6e 73 69 67 6e 65 |..static|.unsigne|
|00001100| 64 20 6c 6f 6e 67 09 67 | 4c 61 73 74 49 64 6c 65 |d long.g|LastIdle|
|00001110| 54 69 63 6b 3b 09 09 09 | 09 2f 2f 20 54 68 65 20 |Tick;...|.// The |
|00001120| 6c 61 73 74 20 74 69 63 | 6b 20 77 65 20 67 6f 74 |last tic|k we got|
|00001130| 20 73 6f 6d 65 20 69 64 | 6c 65 20 74 69 6d 65 0d | some id|le time.|
|00001140| 09 73 74 61 74 69 63 09 | 75 6e 73 69 67 6e 65 64 |.static.|unsigned|
|00001150| 20 6c 6f 6e 67 09 67 4e | 65 78 74 54 69 6d 65 6f | long.gN|extTimeo|
|00001160| 75 74 54 65 73 74 3b 09 | 09 09 2f 2f 20 4e 65 78 |utTest;.|..// Nex|
|00001170| 74 20 74 69 63 6b 20 74 | 6f 20 6c 6f 6f 6b 20 66 |t tick t|o look f|
|00001180| 6f 72 20 73 65 6d 61 70 | 68 6f 72 65 73 20 74 68 |or semap|hores th|
|00001190| 61 74 20 68 61 76 65 20 | 74 69 6d 65 64 20 6f 75 |at have |timed ou|
|000011a0| 74 0d 09 0d 09 09 09 54 | 53 65 6d 61 70 68 6f 72 |t......T|Semaphor|
|000011b0| 65 2a 09 09 66 4e 65 78 | 74 53 65 6d 61 70 68 6f |e*..fNex|tSemapho|
|000011c0| 72 65 3b 09 09 09 09 2f | 2f 20 50 72 65 76 69 6f |re;..../|/ Previo|
|000011d0| 75 73 20 73 65 6d 61 70 | 68 6f 72 65 20 69 6e 20 |us semap|hore in |
|000011e0| 74 68 65 20 67 6c 6f 62 | 61 6c 20 6c 69 73 74 20 |the glob|al list |
|000011f0| 6f 66 20 61 6c 6c 20 73 | 65 6d 61 70 68 6f 72 65 |of all s|emaphore|
|00001200| 73 0d 09 09 09 54 53 65 | 6d 61 70 68 6f 72 65 2a |s....TSe|maphore*|
|00001210| 09 09 66 50 72 65 76 69 | 6f 75 73 53 65 6d 61 70 |..fPrevi|ousSemap|
|00001220| 68 6f 72 65 3b 09 09 09 | 2f 2f 20 4e 65 78 74 20 |hore;...|// Next |
|00001230| 73 65 6d 61 70 68 6f 72 | 65 20 69 6e 20 74 68 65 |semaphor|e in the|
|00001240| 20 67 6c 6f 62 61 6c 20 | 6c 69 73 74 20 6f 66 20 | global |list of |
|00001250| 61 6c 6c 20 73 65 6d 61 | 70 68 6f 72 65 73 0d 09 |all sema|phores..|
|00001260| 0d 09 09 09 54 68 72 65 | 61 64 49 44 09 09 66 4f |....Thre|adID..fO|
|00001270| 77 6e 65 72 54 68 72 65 | 61 64 3b 09 09 09 09 2f |wnerThre|ad;..../|
|00001280| 2f 20 54 68 65 20 74 68 | 72 65 61 64 20 74 68 61 |/ The th|read tha|
|00001290| 74 20 63 75 72 72 65 6e | 74 6c 79 20 6f 77 6e 73 |t curren|tly owns|
|000012a0| 20 74 68 69 73 20 73 65 | 6d 61 70 68 6f 72 65 0d | this se|maphore.|
|000012b0| 09 09 09 54 54 68 72 65 | 61 64 49 44 51 75 65 75 |...TThre|adIDQueu|
|000012c0| 65 09 66 42 6c 6f 63 6b | 65 64 54 68 72 65 61 64 |e.fBlock|edThread|
|000012d0| 73 3b 09 09 09 2f 2f 20 | 51 75 65 75 65 20 6f 66 |s;...// |Queue of|
|000012e0| 20 74 68 72 65 61 64 73 | 20 62 6c 6f 63 6b 65 64 | threads| blocked|
|000012f0| 20 6f 6e 20 74 68 69 73 | 20 73 65 6d 61 70 68 6f | on this| semapho|
|00001300| 72 65 0d 0d 09 09 09 6c | 6f 6e 67 09 09 09 66 52 |re.....l|ong...fR|
|00001310| 65 73 6f 75 72 63 65 43 | 6f 75 6e 74 3b 09 09 09 |esourceC|ount;...|
|00001320| 09 2f 2f 20 54 68 65 20 | 6e 75 6d 62 65 72 20 6f |.// The |number o|
|00001330| 66 20 74 68 72 65 61 64 | 73 20 74 68 61 74 20 6d |f thread|s that m|
|00001340| 61 79 20 6f 77 6e 20 74 | 68 69 73 20 73 65 6d 61 |ay own t|his sema|
|00001350| 70 68 6f 72 65 20 28 30 | 20 6f 72 20 31 29 0d 09 |phore (0| or 1)..|
|00001360| 09 09 6c 6f 6e 67 09 09 | 09 66 53 65 6d 61 70 68 |..long..|.fSemaph|
|00001370| 6f 72 65 49 44 3b 09 09 | 09 09 2f 2f 20 54 68 65 |oreID;..|..// The|
|00001380| 20 49 44 20 28 75 73 75 | 61 6c 6c 79 20 75 6e 69 | ID (usu|ally uni|
|00001390| 71 75 65 29 20 66 6f 72 | 20 74 68 69 73 20 73 65 |que) for| this se|
|000013a0| 6d 61 70 68 6f 72 65 0d | 09 09 09 6c 6f 6e 67 09 |maphore.|...long.|
|000013b0| 09 09 66 4f 77 6e 65 72 | 43 6f 75 6e 74 3b 09 09 |..fOwner|Count;..|
|000013c0| 09 09 2f 2f 20 54 68 65 | 20 6e 75 6d 62 65 72 20 |..// The| number |
|000013d0| 6f 66 20 74 68 72 65 61 | 64 73 20 74 68 61 74 20 |of threa|ds that |
|000013e0| 63 75 72 72 65 6e 74 6c | 79 20 6f 77 6e 20 74 68 |currentl|y own th|
|000013f0| 65 20 73 65 6d 61 70 68 | 6f 72 65 20 28 3c 3d 20 |e semaph|ore (<= |
|00001400| 66 52 65 73 6f 75 72 63 | 65 43 6f 75 6e 74 29 0d |fResourc|eCount).|
|00001410| 09 09 09 42 6f 6f 6c 65 | 61 6e 09 09 09 66 44 69 |...Boole|an...fDi|
|00001420| 73 70 6f 73 65 64 3b 09 | 09 09 09 09 2f 2f 20 54 |sposed;.|....// T|
|00001430| 72 75 65 20 69 66 20 73 | 6f 6d 65 6f 6e 65 20 64 |rue if s|omeone d|
|00001440| 69 73 70 6f 73 65 64 20 | 74 68 69 73 20 73 65 6d |isposed |this sem|
|00001450| 61 70 68 6f 72 65 0d 09 | 09 09 6c 6f 6e 67 09 09 |aphore..|..long..|
|00001460| 09 66 52 65 66 65 72 65 | 6e 63 65 43 6f 75 6e 74 |.fRefere|nceCount|
|00001470| 3b 09 09 09 2f 2f 20 43 | 6f 75 6e 74 20 6f 66 20 |;...// C|ount of |
|00001480| 62 6c 6f 63 6b 65 64 20 | 74 68 72 65 61 64 73 2c |blocked |threads,|
|00001490| 20 74 6f 20 6b 65 65 70 | 20 73 65 6d 61 70 68 6f | to keep| semapho|
|000014a0| 72 65 20 61 72 6f 75 6e | 64 20 61 66 74 65 72 20 |re aroun|d after |
|000014b0| 22 64 65 6c 65 74 69 6f | 6e 22 0d 09 09 09 4f 53 |"deletio|n"....OS|
|000014c0| 45 72 72 09 09 09 66 46 | 61 69 6c 4f 6e 57 61 6b |Err...fF|ailOnWak|
|000014d0| 65 75 70 3b 09 09 09 09 | 2f 2f 20 49 66 20 73 65 |eup;....|// If se|
|000014e0| 74 2c 20 61 6c 6c 20 74 | 68 72 65 61 64 73 20 66 |t, all t|hreads f|
|000014f0| 61 69 6c 20 77 69 74 68 | 20 74 68 69 73 20 65 72 |ail with| this er|
|00001500| 72 6f 72 20 77 68 65 6e | 20 74 68 65 79 20 77 61 |ror when| they wa|
|00001510| 6b 65 20 75 70 0d 09 09 | 09 0d 09 09 09 75 6e 73 |ke up...|.....uns|
|00001520| 69 67 6e 65 64 20 6c 6f | 6e 67 09 66 42 6c 6f 63 |igned lo|ng.fBloc|
|00001530| 6b 53 74 61 72 74 54 69 | 63 6b 3b 09 09 09 2f 2f |kStartTi|ck;...//|
|00001540| 20 54 69 63 6b 43 6f 75 | 6e 74 20 61 74 20 77 68 | TickCou|nt at wh|
|00001550| 69 63 68 20 66 69 72 73 | 74 20 74 68 72 65 61 64 |ich firs|t thread|
|00001560| 20 62 6c 6f 63 6b 65 64 | 20 6f 6e 20 74 68 69 73 | blocked| on this|
|00001570| 20 73 65 6d 61 70 68 6f | 72 65 0d 09 09 09 75 6e | semapho|re....un|
|00001580| 73 69 67 6e 65 64 20 6c | 6f 6e 67 09 66 54 69 6d |signed l|ong.fTim|
|00001590| 65 6f 75 74 54 69 63 6b | 3b 09 09 09 09 2f 2f 20 |eoutTick|;....// |
|000015a0| 54 68 65 20 74 69 63 6b | 20 61 74 20 77 68 69 63 |The tick| at whic|
|000015b0| 68 20 74 68 65 20 73 65 | 6d 61 70 68 6f 72 65 20 |h the se|maphore |
|000015c0| 77 69 6c 6c 20 74 69 6d | 65 20 6f 75 74 20 69 66 |will tim|e out if|
|000015d0| 20 74 69 6d 65 72 0d 09 | 09 09 09 09 09 09 09 09 | timer..|........|
|000015e0| 09 09 09 09 09 2f 2f 20 | 69 73 20 6e 6f 74 20 72 |.....// |is not r|
|000015f0| 65 63 65 74 0d 09 09 09 | 6c 6f 6e 67 09 09 09 66 |ecet....|long...f|
|00001600| 53 65 6d 61 70 68 6f 72 | 65 54 69 6d 65 6f 75 74 |Semaphor|eTimeout|
|00001610| 56 61 6c 75 65 3b 09 09 | 2f 2f 20 48 6f 77 20 6c |Value;..|// How l|
|00001620| 6f 6e 67 20 74 6f 20 77 | 61 69 74 20 61 66 74 65 |ong to w|ait afte|
|00001630| 72 20 65 76 65 72 79 20 | 74 69 6d 65 72 20 72 65 |r every |timer re|
|00001640| 73 65 74 0d 09 09 09 6c | 6f 6e 67 09 09 09 66 53 |set....l|ong...fS|
|00001650| 65 6d 61 70 68 6f 72 65 | 4d 61 78 57 61 69 74 54 |emaphore|MaxWaitT|
|00001660| 69 6d 65 3b 09 09 2f 2f | 20 54 68 65 20 6d 61 78 |ime;..//| The max|
|00001670| 69 6d 75 6d 20 6e 75 6d | 62 65 72 20 6f 66 20 74 |imum num|ber of t|
|00001680| 69 63 6b 73 20 74 6f 20 | 77 61 69 74 20 62 65 66 |icks to |wait bef|
|00001690| 6f 72 65 20 69 67 6e 6f | 72 69 6e 67 20 74 69 6d |ore igno|ring tim|
|000016a0| 65 72 0d 09 09 09 09 09 | 09 09 09 09 09 09 09 09 |er......|........|
|000016b0| 09 2f 2f 20 72 65 73 65 | 74 73 20 61 6e 64 20 6a |.// rese|ts and j|
|000016c0| 75 73 74 20 74 69 6d 65 | 20 6f 75 74 0d 7d 3b 0d |ust time| out.};.|
|000016d0| 0d 69 6e 6c 69 6e 65 09 | 09 76 6f 69 64 09 09 09 |.inline.|.void...|
|000016e0| 54 53 65 6d 61 70 68 6f | 72 65 3a 3a 53 65 74 44 |TSemapho|re::SetD|
|000016f0| 65 66 61 75 6c 74 54 69 | 6d 65 6f 75 74 28 6c 6f |efaultTi|meout(lo|
|00001700| 6e 67 20 6e 65 77 44 65 | 66 61 75 6c 74 29 09 7b |ng newDe|fault).{|
|00001710| 20 67 53 65 6d 61 70 68 | 6f 72 65 44 65 66 61 75 | gSemaph|oreDefau|
|00001720| 6c 74 54 69 6d 65 6f 75 | 74 20 3d 20 6e 65 77 44 |ltTimeou|t = newD|
|00001730| 65 66 61 75 6c 74 3b 20 | 7d 0d 69 6e 6c 69 6e 65 |efault; |}.inline|
|00001740| 09 09 76 6f 69 64 09 09 | 09 54 53 65 6d 61 70 68 |..void..|.TSemaph|
|00001750| 6f 72 65 3a 3a 53 65 74 | 44 65 66 61 75 6c 74 4d |ore::Set|DefaultM|
|00001760| 61 78 57 61 69 74 28 6c | 6f 6e 67 20 6e 65 77 4d |axWait(l|ong newM|
|00001770| 61 78 57 61 69 74 29 09 | 7b 20 67 53 65 6d 61 70 |axWait).|{ gSemap|
|00001780| 68 6f 72 65 44 65 66 61 | 75 6c 74 4d 61 78 57 61 |horeDefa|ultMaxWa|
|00001790| 69 74 20 3d 20 6e 65 77 | 4d 61 78 57 61 69 74 3b |it = new|MaxWait;|
|000017a0| 20 7d 0d 69 6e 6c 69 6e | 65 09 09 75 6e 73 69 67 | }.inlin|e..unsig|
|000017b0| 6e 65 64 20 6c 6f 6e 67 | 09 54 53 65 6d 61 70 68 |ned long|.TSemaph|
|000017c0| 6f 72 65 3a 3a 54 69 6d | 65 6f 75 74 54 69 63 6b |ore::Tim|eoutTick|
|000017d0| 28 29 09 09 09 09 09 09 | 7b 20 72 65 74 75 72 6e |()......|{ return|
|000017e0| 20 66 54 69 6d 65 6f 75 | 74 54 69 63 6b 3b 20 7d | fTimeou|tTick; }|
|000017f0| 0d 0d 69 6e 6c 69 6e 65 | 09 09 6c 6f 6e 67 09 09 |..inline|..long..|
|00001800| 09 54 53 65 6d 61 70 68 | 6f 72 65 3a 3a 53 65 6d |.TSemaph|ore::Sem|
|00001810| 61 70 68 6f 72 65 49 44 | 28 29 20 63 6f 6e 73 74 |aphoreID|() const|
|00001820| 09 09 7b 20 72 65 74 75 | 72 6e 20 66 53 65 6d 61 |..{ retu|rn fSema|
|00001830| 70 68 6f 72 65 49 44 3b | 20 09 7d 0d 0d 0d 23 65 |phoreID;| .}...#e|
|00001840| 6e 64 69 66 0d 00 00 00 | 00 00 00 00 00 00 00 00 |ndif....|........|
|00001850| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001860| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001870| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001880| 00 00 01 00 00 00 01 54 | 00 00 00 54 00 00 00 46 |.......T|...T...F|
|00001890| f5 f7 f9 fb ff fb f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|000018a0| f5 f5 f5 f5 f5 f5 f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|000018b0| 0c 53 65 6d 61 70 68 6f | 72 65 73 2e 68 6f 02 00 |.Semapho|res.ho..|
|000018c0| 00 00 54 45 58 54 43 57 | 49 45 01 00 00 3c 00 00 |..TEXTCW|IE...<..|
|000018d0| 00 00 54 45 58 54 43 57 | 49 45 01 00 00 3c 00 00 |..TEXTCW|IE...<..|
|000018e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000018f0| 00 00 aa 9a 3e ee 00 00 | 17 c5 00 00 01 9a f5 f5 |....>...|........|
|00001900| f5 f5 f5 f5 f5 d8 d8 d8 | d8 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00001910| f5 f7 f9 fb ff fb f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00001920| f5 f5 f5 f5 d8 d8 d8 d8 | d8 d8 f5 f5 f5 f5 f5 f5 |........|........|
|00001930| f5 f7 f9 fb ff fb f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00001940| f5 f5 f5 d8 d8 d8 f5 f5 | d8 d8 d8 f5 f5 f5 f5 f5 |........|........|
|00001950| f5 f7 f9 fb ff fb f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00001960| f5 f5 f5 d8 d8 d8 f5 f5 | d8 d8 d8 f5 f5 f5 f5 f5 |........|........|
|00001970| f5 f7 f9 fb ff fb f5 f5 | f5 f5 f5 f5 f5 f5 f5 f5 |........|........|
|00001980| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 00 00 00 |...H..Mo|naco....|
|00001990| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000019a0| 00 00 00 00 00 00 00 03 | 00 04 00 63 00 13 01 d6 |........|...c....|
|000019b0| 02 72 00 63 00 13 01 d6 | 02 72 ac a9 86 3d 00 00 |.r.c....|.r...=..|
|000019c0| 00 00 00 00 00 00 00 00 | 00 00 01 00 00 00 00 04 |........|........|
|000019d0| 00 01 00 01 00 00 01 00 | 00 00 01 54 00 00 00 54 |........|...T...T|
|000019e0| 00 00 00 46 00 dc bc 88 | 15 ac 00 00 00 1c 00 46 |...F....|.......F|
|000019f0| 00 01 4d 50 53 52 00 00 | 00 12 4d 57 42 42 00 00 |..MPSR..|..MWBB..|
|00001a00| 00 1e 03 ed ff ff 00 00 | 00 00 00 00 00 00 03 f0 |........|........|
|00001a10| ff ff 00 00 00 4c 00 00 | 00 00 00 00 00 00 00 00 |.....L..|........|
|00001a20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001a30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001a40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001a50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001a70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+