Artifact ad2ee82f907cec8e41bcc0d82fa57024803b21e6:
0000: 23 69 66 6e 64 65 66 20 5f 4b 49 4c 49 42 5f 54 #ifndef _KILIB_T
0010: 48 52 45 41 44 5f 48 5f 0d 0a 23 64 65 66 69 6e HREAD_H_..#defin
0020: 65 20 5f 4b 49 4c 49 42 5f 54 48 52 45 41 44 5f e _KILIB_THREAD_
0030: 48 5f 0d 0a 23 69 6e 63 6c 75 64 65 20 22 74 79 H_..#include "ty
0040: 70 65 73 2e 68 22 0d 0a 23 69 66 6e 64 65 66 20 pes.h"..#ifndef
0050: 5f 5f 63 63 64 6f 63 5f 5f 0d 0a 6e 61 6d 65 73 __ccdoc__..names
0060: 70 61 63 65 20 6b 69 20 7b 0d 0a 23 65 6e 64 69 pace ki {..#endi
0070: 66 0d 0a 0d 0a 09 0d 0a 0d 0a 2f 2f 3d 3d 3d 3d f.........//====
0080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0090: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00c0: 3d 3d 3d 3d 3d 0d 0a 2f 2f 40 7b 20 40 70 6b 67 =====..//@{ @pkg
00d0: 20 6b 69 2e 43 6f 72 65 20 2f 2f 40 7d 0d 0a 2f ki.Core //@}../
00e0: 2f 40 7b 0d 0a 2f 2f 09 83 7d 83 8b 83 60 83 58 /@{..//..}...`.X
00f0: 83 8c 83 62 83 68 82 cc 8a c7 97 9d 0d 0a 2f 2f ...b.h........//
0100: 0d 0a 2f 2f 09 82 dc 82 be 89 bd 82 e0 82 b5 82 ..//............
0110: dc 82 b9 82 f1 0d 0a 2f 2f 40 7d 0d 0a 2f 2f 3d .......//@}..//=
0120: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0130: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0140: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0150: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0160: 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 0d 0a 63 6c ========......cl
0170: 61 73 73 20 54 68 72 65 61 64 4d 61 6e 61 67 65 ass ThreadManage
0180: 72 0d 0a 7b 0d 0a 70 75 62 6c 69 63 3a 0d 0a 09 r..{..public:...
0190: 2f 2f 40 7b 20 8e c0 8d 73 89 c2 94 5c 83 49 83 //@{ ...s...\.I.
01a0: 75 83 57 83 46 83 4e 83 67 82 f0 82 c9 8b 4e 93 u.W.F.N.g.....N.
01b0: ae 82 f0 82 a9 82 af 82 e9 20 2f 2f 40 7d 0d 0a ......... //@}..
01c0: 09 76 6f 69 64 20 52 75 6e 28 20 63 6c 61 73 73 .void Run( class
01d0: 20 52 75 6e 6e 61 62 6c 65 26 20 72 20 29 3b 0d Runnable& r );.
01e0: 0a 0d 0a 09 2f 2f 40 7b 20 95 a1 90 94 83 58 83 ....//@{ .....X.
01f0: 8c 83 62 83 68 82 aa 91 96 82 c1 82 c4 82 a2 82 ..b.h...........
0200: e9 82 a9 82 c7 82 a4 82 a9 81 48 20 2f 2f 40 7d ..........H //@}
0210: 0d 0a 09 62 6f 6f 6c 20 69 73 4d 54 28 29 20 63 ...bool isMT() c
0220: 6f 6e 73 74 3b 0d 0a 0d 0a 70 72 69 76 61 74 65 onst;....private
0230: 3a 0d 0a 0d 0a 09 54 68 72 65 61 64 4d 61 6e 61 :.....ThreadMana
0240: 67 65 72 28 29 3b 0d 0a 0d 0a 70 72 69 76 61 74 ger();....privat
0250: 65 3a 0d 0a 0d 0a 09 69 6e 74 20 74 68 72 65 61 e:.....int threa
0260: 64 4e 75 6d 5f 3b 0d 0a 09 73 74 61 74 69 63 20 dNum_;...static
0270: 54 68 72 65 61 64 4d 61 6e 61 67 65 72 2a 20 70 ThreadManager* p
0280: 55 6e 69 71 75 65 49 6e 73 74 61 6e 63 65 5f 3b UniqueInstance_;
0290: 0d 0a 0d 0a 70 72 69 76 61 74 65 3a 0d 0a 0d 0a ....private:....
02a0: 09 73 74 61 74 69 63 20 44 57 4f 52 44 20 57 49 .static DWORD WI
02b0: 4e 41 50 49 20 54 68 72 65 61 64 53 74 75 62 46 NAPI ThreadStubF
02c0: 75 6e 63 28 76 6f 69 64 2a 29 3b 0d 0a 0d 0a 70 unc(void*);....p
02d0: 72 69 76 61 74 65 3a 0d 0a 0d 0a 09 66 72 69 65 rivate:.....frie
02e0: 6e 64 20 76 6f 69 64 20 41 50 49 45 4e 54 52 59 nd void APIENTRY
02f0: 20 53 74 61 72 74 75 70 28 29 3b 0d 0a 09 66 72 Startup();...fr
0300: 69 65 6e 64 20 69 6e 6c 69 6e 65 20 54 68 72 65 iend inline Thre
0310: 61 64 4d 61 6e 61 67 65 72 26 20 74 68 64 28 29 adManager& thd()
0320: 3b 0d 0a 09 4e 4f 43 4f 50 59 28 54 68 72 65 61 ;...NOCOPY(Threa
0330: 64 4d 61 6e 61 67 65 72 29 3b 0d 0a 7d 3b 0d 0a dManager);..};..
0340: 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d ......//--------
0350: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0370: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0380: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0390: 2d 0d 0a 0d 0a 2f 2f 40 7b 20 97 42 88 ea 82 cc -....//@{ .B....
03a0: 83 58 83 8c 83 62 83 68 8a c7 97 9d 83 49 83 75 .X...b.h.....I.u
03b0: 83 57 83 46 83 4e 83 67 82 f0 95 d4 82 b7 20 2f .W.F.N.g...... /
03c0: 2f 40 7d 0d 0a 69 6e 6c 69 6e 65 20 54 68 72 65 /@}..inline Thre
03d0: 61 64 4d 61 6e 61 67 65 72 26 20 74 68 64 28 29 adManager& thd()
03e0: 0d 0a 09 7b 20 72 65 74 75 72 6e 20 2a 54 68 72 ...{ return *Thr
03f0: 65 61 64 4d 61 6e 61 67 65 72 3a 3a 70 55 6e 69 eadManager::pUni
0400: 71 75 65 49 6e 73 74 61 6e 63 65 5f 3b 20 7d 0d queInstance_; }.
0410: 0a 0d 0a 69 6e 6c 69 6e 65 20 62 6f 6f 6c 20 54 ...inline bool T
0420: 68 72 65 61 64 4d 61 6e 61 67 65 72 3a 3a 69 73 hreadManager::is
0430: 4d 54 28 29 20 63 6f 6e 73 74 0d 0a 09 7b 20 72 MT() const...{ r
0440: 65 74 75 72 6e 20 30 20 21 3d 20 74 68 72 65 61 eturn 0 != threa
0450: 64 4e 75 6d 5f 3b 20 7d 0d 0a 0d 0a 0d 0a 0d 0a dNum_; }........
0460: 2f 2f 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d //==============
0470: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0480: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0490: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
04a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 2f 2f 40 ===========..//@
04b0: 7b 0d 0a 2f 2f 09 8e c0 8d 73 89 c2 94 5c 83 49 {..//....s...\.I
04c0: 83 75 83 57 83 46 83 4e 83 67 8a ee 92 ea 0d 0a .u.W.F.N.g......
04d0: 2f 2f 40 7d 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d 3d 3d //@}..//========
04e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
04f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0500: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0510: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0520: 3d 0d 0a 0d 0a 63 6c 61 73 73 20 52 75 6e 6e 61 =....class Runna
0530: 62 6c 65 0d 0a 7b 0d 0a 70 72 6f 74 65 63 74 65 ble..{..protecte
0540: 64 3a 0d 0a 09 52 75 6e 6e 61 62 6c 65 28 29 3b d:...Runnable();
0550: 0d 0a 09 76 69 72 74 75 61 6c 20 7e 52 75 6e 6e ...virtual ~Runn
0560: 61 62 6c 65 28 29 3b 0d 0a 0d 0a 09 76 69 72 74 able();.....virt
0570: 75 61 6c 20 76 6f 69 64 20 53 74 61 72 74 54 68 ual void StartTh
0580: 72 65 61 64 28 29 20 3d 20 30 3b 0d 0a 09 76 6f read() = 0;...vo
0590: 69 64 20 50 6c 65 61 73 65 45 78 69 74 28 29 3b id PleaseExit();
05a0: 0d 0a 09 62 6f 6f 6c 20 69 73 45 78 69 74 52 65 ...bool isExitRe
05b0: 71 75 65 73 74 65 64 28 29 20 63 6f 6e 73 74 3b quested() const;
05c0: 0d 0a 09 62 6f 6f 6c 20 69 73 52 75 6e 6e 69 6e ...bool isRunnin
05d0: 67 28 29 20 63 6f 6e 73 74 3b 0d 0a 0d 0a 70 72 g() const;....pr
05e0: 69 76 61 74 65 3a 0d 0a 09 76 6f 69 64 20 46 69 ivate:...void Fi
05f0: 6e 61 6c 69 7a 65 54 68 72 65 61 64 28 29 3b 0d nalizeThread();.
0600: 0a 09 66 72 69 65 6e 64 20 63 6c 61 73 73 20 54 ..friend class T
0610: 68 72 65 61 64 4d 61 6e 61 67 65 72 3b 0d 0a 09 hreadManager;...
0620: 48 41 4e 44 4c 45 20 68 45 76 65 6e 74 5f 3b 0d HANDLE hEvent_;.
0630: 0a 09 48 41 4e 44 4c 45 20 68 54 68 72 65 61 64 ..HANDLE hThread
0640: 5f 3b 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f _;..};........//
0650: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0660: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0670: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0680: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0690: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 2f 2f 40 7b 0d =========..//@{.
06a0: 0a 2f 2f 09 83 7d 83 8b 83 60 83 58 83 8c 83 62 .//..}...`.X...b
06b0: 83 68 81 45 83 7c 83 8a 83 56 81 5b 82 50 0d 0a .h.E.|...V.[.P..
06c0: 2f 2f 0d 0a 2f 2f 09 82 b1 82 cc 83 4e 83 89 83 //..//......N...
06d0: 58 82 a9 82 e7 94 68 90 b6 82 b7 82 e9 82 c6 81 X.....h.........
06e0: 41 41 75 74 6f 4c 6f 63 6b 20 83 4e 83 89 83 58 AAutoLock .N...X
06f0: 82 f0 8e 67 82 a6 82 e9 82 e6 82 a4 82 c9 82 c8 ...g............
0700: 82 e8 82 dc 82 b7 81 42 0d 0a 2f 2f 09 82 b1 82 .......B..//....
0710: cc 83 4e 83 89 83 58 82 c9 20 74 68 69 73 20 83 ..N...X.. this .
0720: 7c 83 43 83 93 83 5e 82 f0 93 6e 82 b7 82 b1 82 |.C...^...n.....
0730: c6 82 c5 94 72 91 bc 8f f3 91 d4 82 c9 93 fc 82 ....r...........
0740: e8 81 41 83 66 83 58 83 67 83 89 83 4e 83 5e 82 ..A.f.X.g...N.^.
0750: c5 0d 0a 2f 2f 09 94 b2 82 af 8f 6f 82 b9 82 e9 ...//......o....
0760: 82 e6 82 a4 82 c9 82 c8 82 e8 82 dc 82 b7 81 42 ...............B
0770: 4e 6f 4c 6f 63 6b 61 62 6c 65 3a 3a 41 75 74 6f NoLockable::Auto
0780: 4c 6f 63 6b 20 82 cd 8e c0 8d db 82 cd 89 bd 82 Lock ...........
0790: e0 82 b5 82 dc 82 b9 82 f1 81 42 0d 0a 2f 2f 40 ..........B..//@
07a0: 7d 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d }..//===========
07b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
07c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
07d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
07e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a ==============..
07f0: 0d 0a 63 6c 61 73 73 20 4e 6f 4c 6f 63 6b 61 62 ..class NoLockab
0800: 6c 65 0d 0a 7b 0d 0a 70 72 6f 74 65 63 74 65 64 le..{..protected
0810: 3a 0d 0a 09 73 74 72 75 63 74 20 41 75 74 6f 4c :...struct AutoL
0820: 6f 63 6b 0d 0a 09 7b 0d 0a 09 09 41 75 74 6f 4c ock...{....AutoL
0830: 6f 63 6b 28 20 4e 6f 4c 6f 63 6b 61 62 6c 65 2a ock( NoLockable*
0840: 20 68 6f 73 74 20 29 20 7b 7d 0d 0a 09 7d 3b 0d host ) {}...};.
0850: 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 3d 3d 3d .};........//===
0860: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0870: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0880: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0890: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
08a0: 3d 3d 3d 3d 3d 3d 0d 0a 2f 2f 40 7b 0d 0a 2f 2f ======..//@{..//
08b0: 09 83 7d 83 8b 83 60 83 58 83 8c 83 62 83 68 81 ..}...`.X...b.h.
08c0: 45 83 7c 83 8a 83 56 81 5b 82 51 0d 0a 2f 2f 0d E.|...V.[.Q..//.
08d0: 0a 2f 2f 09 82 b1 82 cc 83 4e 83 89 83 58 82 a9 .//......N...X..
08e0: 82 e7 94 68 90 b6 82 b7 82 e9 82 c6 81 41 41 75 ...h.........AAu
08f0: 74 6f 4c 6f 63 6b 20 83 4e 83 89 83 58 82 f0 8e toLock .N...X...
0900: 67 82 a6 82 e9 82 e6 82 a4 82 c9 82 c8 82 e8 82 g...............
0910: dc 82 b7 81 42 0d 0a 2f 2f 09 82 b1 82 cc 83 4e ....B..//......N
0920: 83 89 83 58 82 c9 20 74 68 69 73 20 83 7c 83 43 ...X.. this .|.C
0930: 83 93 83 5e 82 f0 93 6e 82 b7 82 b1 82 c6 82 c5 ...^...n........
0940: 94 72 91 bc 8f f3 91 d4 82 c9 93 fc 82 e8 81 41 .r.............A
0950: 83 66 83 58 83 67 83 89 83 4e 83 5e 82 c5 0d 0a .f.X.g...N.^....
0960: 2f 2f 09 94 b2 82 af 8f 6f 82 b9 82 e9 82 e6 82 //......o.......
0970: a4 82 c9 82 c8 82 e8 82 dc 82 b7 81 42 45 7a 4c ............BEzL
0980: 6f 63 6b 61 62 6c 65 3a 3a 41 75 74 6f 4c 6f 63 ockable::AutoLoc
0990: 6b 20 82 cd 81 41 83 56 83 93 83 4f 83 8b 83 58 k ...A.V...O...X
09a0: 83 8c 83 62 83 68 82 c5 0d 0a 2f 2f 09 93 ae 8d ...b.h....//....
09b0: ec 82 b7 82 e9 82 c6 82 ab 82 aa 82 d9 82 c6 82 ................
09c0: f1 82 c7 82 c6 82 a2 82 a4 83 41 83 76 83 8a 83 ..........A.v...
09d0: 50 81 5b 83 56 83 87 83 93 8c fc 82 af 82 c9 81 P.[.V...........
09e0: 41 8d 82 91 ac 82 be 82 af 82 ea 82 c7 0d 0a 2f A............../
09f0: 2f 09 95 73 8a ae 91 53 82 c8 94 72 91 bc 90 a7 /..s...S...r....
0a00: 8c e4 82 f0 8d 73 82 a2 82 dc 82 b7 81 42 82 51 .....s.......B.Q
0a10: 96 7b 96 da 82 cc 83 58 83 8c 83 62 83 68 97 a7 .{.....X...b.h..
0a20: 82 bf 8f e3 82 b0 82 cc 8f 75 8a d4 82 aa 8a eb .........u......
0a30: 82 c8 82 a2 81 42 0d 0a 2f 2f 40 7d 0d 0a 2f 2f .....B..//@}..//
0a40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0a50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0a60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0a70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0a80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 63 6c 61 =========....cla
0a90: 73 73 20 45 7a 4c 6f 63 6b 61 62 6c 65 0d 0a 7b ss EzLockable..{
0aa0: 0d 0a 70 72 6f 74 65 63 74 65 64 3a 0d 0a 09 45 ..protected:...E
0ab0: 7a 4c 6f 63 6b 61 62 6c 65 28 29 0d 0a 09 09 7b zLockable()....{
0ac0: 20 3a 3a 49 6e 69 74 69 61 6c 69 7a 65 43 72 69 ::InitializeCri
0ad0: 74 69 63 61 6c 53 65 63 74 69 6f 6e 28 20 26 63 ticalSection( &c
0ae0: 73 65 63 74 69 6f 6e 5f 20 29 3b 20 7d 0d 0a 09 section_ ); }...
0af0: 7e 45 7a 4c 6f 63 6b 61 62 6c 65 28 29 0d 0a 09 ~EzLockable()...
0b00: 09 7b 20 3a 3a 44 65 6c 65 74 65 43 72 69 74 69 .{ ::DeleteCriti
0b10: 63 61 6c 53 65 63 74 69 6f 6e 28 20 26 63 73 65 calSection( &cse
0b20: 63 74 69 6f 6e 5f 20 29 3b 20 7d 0d 0a 0d 0a 09 ction_ ); }.....
0b30: 73 74 72 75 63 74 20 41 75 74 6f 4c 6f 63 6b 0d struct AutoLock.
0b40: 0a 09 7b 0d 0a 09 09 41 75 74 6f 4c 6f 63 6b 28 ..{....AutoLock(
0b50: 20 45 7a 4c 6f 63 6b 61 62 6c 65 2a 20 68 6f 73 EzLockable* hos
0b60: 74 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 66 28 t )....{.....if(
0b70: 20 4e 55 4c 4c 20 21 3d 20 28 70 43 73 5f 3d 28 NULL != (pCs_=(
0b80: 74 68 64 28 29 2e 69 73 4d 54 28 29 20 3f 20 26 thd().isMT() ? &
0b90: 68 6f 73 74 2d 3e 63 73 65 63 74 69 6f 6e 5f 20 host->csection_
0ba0: 3a 20 4e 55 4c 4c 29 29 20 29 0d 0a 09 09 09 09 : NULL)) )......
0bb0: 3a 3a 45 6e 74 65 72 43 72 69 74 69 63 61 6c 53 ::EnterCriticalS
0bc0: 65 63 74 69 6f 6e 28 20 70 43 73 5f 20 29 3b 0d ection( pCs_ );.
0bd0: 0a 09 09 7d 0d 0a 09 09 7e 41 75 74 6f 4c 6f 63 ...}....~AutoLoc
0be0: 6b 28 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 66 28 k()....{.....if(
0bf0: 20 70 43 73 5f 20 29 0d 0a 09 09 09 09 3a 3a 4c pCs_ )......::L
0c00: 65 61 76 65 43 72 69 74 69 63 61 6c 53 65 63 74 eaveCriticalSect
0c10: 69 6f 6e 28 20 70 43 73 5f 20 29 3b 0d 0a 09 09 ion( pCs_ );....
0c20: 7d 0d 0a 09 70 72 69 76 61 74 65 3a 0d 0a 09 09 }...private:....
0c30: 4e 4f 43 4f 50 59 28 41 75 74 6f 4c 6f 63 6b 29 NOCOPY(AutoLock)
0c40: 3b 0d 0a 09 20 20 20 20 43 52 49 54 49 43 41 4c ;... CRITICAL
0c50: 5f 53 45 43 54 49 4f 4e 2a 20 70 43 73 5f 3b 0d _SECTION* pCs_;.
0c60: 0a 09 7d 3b 0d 0a 0d 0a 70 72 69 76 61 74 65 3a ..};....private:
0c70: 0d 0a 09 43 52 49 54 49 43 41 4c 5f 53 45 43 54 ...CRITICAL_SECT
0c80: 49 4f 4e 20 63 73 65 63 74 69 6f 6e 5f 3b 0d 0a ION csection_;..
0c90: 09 23 69 66 64 65 66 20 5f 5f 44 4d 43 5f 5f 0d .#ifdef __DMC__.
0ca0: 0a 09 09 66 72 69 65 6e 64 20 73 74 72 75 63 74 ...friend struct
0cb0: 20 45 7a 4c 6f 63 6b 61 62 6c 65 3a 3a 41 75 74 EzLockable::Aut
0cc0: 6f 4c 6f 63 6b 3b 0d 0a 09 23 65 6c 73 65 0d 0a oLock;...#else..
0cd0: 09 09 66 72 69 65 6e 64 20 73 74 72 75 63 74 20 ..friend struct
0ce0: 41 75 74 6f 4c 6f 63 6b 3b 0d 0a 09 23 65 6e 64 AutoLock;...#end
0cf0: 69 66 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f if..};........//
0d00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0d10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0d20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0d30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0d40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 2f 2f 40 7b 0d =========..//@{.
0d50: 0a 2f 2f 09 83 7d 83 8b 83 60 83 58 83 8c 83 62 .//..}...`.X...b
0d60: 83 68 81 45 83 7c 83 8a 83 56 81 5b 82 52 0d 0a .h.E.|...V.[.R..
0d70: 2f 2f 0d 0a 2f 2f 09 82 b1 82 cc 83 4e 83 89 83 //..//......N...
0d80: 58 82 a9 82 e7 94 68 90 b6 82 b7 82 e9 82 c6 81 X.....h.........
0d90: 41 41 75 74 6f 4c 6f 63 6b 20 83 4e 83 89 83 58 AAutoLock .N...X
0da0: 82 f0 8e 67 82 a6 82 e9 82 e6 82 a4 82 c9 82 c8 ...g............
0db0: 82 e8 82 dc 82 b7 81 42 0d 0a 2f 2f 09 82 b1 82 .......B..//....
0dc0: cc 83 4e 83 89 83 58 82 c9 20 74 68 69 73 20 83 ..N...X.. this .
0dd0: 7c 83 43 83 93 83 5e 82 f0 93 6e 82 b7 82 b1 82 |.C...^...n.....
0de0: c6 82 c5 94 72 91 bc 8f f3 91 d4 82 c9 93 fc 82 ....r...........
0df0: e8 81 41 83 66 83 58 83 67 83 89 83 4e 83 5e 82 ..A.f.X.g...N.^.
0e00: c5 0d 0a 2f 2f 09 94 b2 82 af 8f 6f 82 b9 82 e9 ...//......o....
0e10: 82 e6 82 a4 82 c9 82 c8 82 e8 82 dc 82 b7 81 42 ...............B
0e20: 4c 6f 63 6b 61 62 6c 65 3a 3a 41 75 74 6f 4c 6f Lockable::AutoLo
0e30: 63 6b 20 82 cd 81 41 8a ae 91 53 82 c8 94 72 91 ck ...A...S...r.
0e40: bc 90 a7 8c e4 82 f0 0d 0a 2f 2f 09 8d 73 82 a2 .........//..s..
0e50: 82 dc 82 b7 81 42 96 9c 91 53 82 f0 8a fa 82 b7 .....B...S......
0e60: 82 c8 82 e7 82 a9 82 c8 82 e7 82 b8 82 b1 82 cc ................
0e70: 83 4e 83 89 83 58 82 f0 97 70 82 a2 82 dc 82 b5 .N...X...p......
0e80: 82 e5 82 a4 81 42 0d 0a 2f 2f 40 7d 0d 0a 2f 2f .....B..//@}..//
0e90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0ea0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0eb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0ec0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0ed0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 63 6c 61 =========....cla
0ee0: 73 73 20 4c 6f 63 6b 61 62 6c 65 0d 0a 7b 0d 0a ss Lockable..{..
0ef0: 70 72 6f 74 65 63 74 65 64 3a 0d 0a 09 4c 6f 63 protected:...Loc
0f00: 6b 61 62 6c 65 28 29 0d 0a 09 09 7b 20 3a 3a 49 kable()....{ ::I
0f10: 6e 69 74 69 61 6c 69 7a 65 43 72 69 74 69 63 61 nitializeCritica
0f20: 6c 53 65 63 74 69 6f 6e 28 20 26 63 73 65 63 74 lSection( &csect
0f30: 69 6f 6e 5f 20 29 3b 20 7d 0d 0a 09 7e 4c 6f 63 ion_ ); }...~Loc
0f40: 6b 61 62 6c 65 28 29 0d 0a 09 09 7b 20 3a 3a 44 kable()....{ ::D
0f50: 65 6c 65 74 65 43 72 69 74 69 63 61 6c 53 65 63 eleteCriticalSec
0f60: 74 69 6f 6e 28 20 26 63 73 65 63 74 69 6f 6e 5f tion( &csection_
0f70: 20 29 3b 20 7d 0d 0a 0d 0a 09 73 74 72 75 63 74 ); }.....struct
0f80: 20 41 75 74 6f 4c 6f 63 6b 0d 0a 09 7b 0d 0a 09 AutoLock...{...
0f90: 09 41 75 74 6f 4c 6f 63 6b 28 20 4c 6f 63 6b 61 .AutoLock( Locka
0fa0: 62 6c 65 2a 20 68 6f 73 74 20 29 0d 0a 09 09 7b ble* host )....{
0fb0: 0d 0a 09 09 09 70 43 73 5f 20 3d 20 26 68 6f 73 .....pCs_ = &hos
0fc0: 74 2d 3e 63 73 65 63 74 69 6f 6e 5f 3b 0d 0a 09 t->csection_;...
0fd0: 09 09 3a 3a 45 6e 74 65 72 43 72 69 74 69 63 61 ..::EnterCritica
0fe0: 6c 53 65 63 74 69 6f 6e 28 20 70 43 73 5f 20 29 lSection( pCs_ )
0ff0: 3b 0d 0a 09 09 7d 0d 0a 09 09 7e 41 75 74 6f 4c ;....}....~AutoL
1000: 6f 63 6b 28 29 0d 0a 09 09 7b 0d 0a 09 09 09 3a ock()....{.....:
1010: 3a 4c 65 61 76 65 43 72 69 74 69 63 61 6c 53 65 :LeaveCriticalSe
1020: 63 74 69 6f 6e 28 20 70 43 73 5f 20 29 3b 0d 0a ction( pCs_ );..
1030: 09 09 7d 0d 0a 09 70 72 69 76 61 74 65 3a 0d 0a ..}...private:..
1040: 09 09 4e 4f 43 4f 50 59 28 41 75 74 6f 4c 6f 63 ..NOCOPY(AutoLoc
1050: 6b 29 3b 0d 0a 09 20 20 20 20 43 52 49 54 49 43 k);... CRITIC
1060: 41 4c 5f 53 45 43 54 49 4f 4e 2a 20 70 43 73 5f AL_SECTION* pCs_
1070: 3b 0d 0a 09 7d 3b 0d 0a 09 66 72 69 65 6e 64 20 ;...};...friend
1080: 73 74 72 75 63 74 20 41 75 74 6f 4c 6f 63 6b 3b struct AutoLock;
1090: 0d 0a 0d 0a 70 72 69 76 61 74 65 3a 0d 0a 09 43 ....private:...C
10a0: 52 49 54 49 43 41 4c 5f 53 45 43 54 49 4f 4e 20 RITICAL_SECTION
10b0: 63 73 65 63 74 69 6f 6e 5f 3b 0d 0a 7d 3b 0d 0a csection_;..};..
10c0: 0d 0a 0d 0a 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d 3d 3d ......//========
10d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
10e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
10f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1100: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1110: 3d 0d 0a 0d 0a 7d 20 20 20 20 20 20 2f 2f 20 6e =....} // n
1120: 61 6d 65 73 70 61 63 65 20 6b 69 0d 0a 23 65 6e amespace ki..#en
1130: 64 69 66 20 2f 2f 20 5f 4b 49 4c 49 42 5f 54 48 dif // _KILIB_TH
1140: 52 45 41 44 5f 48 5f 0d 0a READ_H_..