OSDN Git Service

add b25-remote
[rec10/rec10-git.git] / b25-remote / TsUtilClass.cpp
1 // TsUtilClass.cpp: TS\83\86\81[\83e\83B\83\8a\83e\83B\81[\83N\83\89\83X\82Ì\83C\83\93\83v\83\8a\83\81\83\93\83e\81[\83V\83\87\83\93\r
2 //\r
3 //////////////////////////////////////////////////////////////////////\r
4 \r
5 #include "TsUtilClass.h"\r
6 \r
7 \r
8 //////////////////////////////////////////////////////////////////////\r
9 // CDynamicReferenceable \83N\83\89\83X\82Ì\8d\\92z/\8fÁ\96Å\r
10 //////////////////////////////////////////////////////////////////////\r
11 \r
12 CDynamicReferenceable::CDynamicReferenceable()\r
13         : m_dwRefCount(0UL)\r
14 {\r
15 \r
16 }\r
17 \r
18 CDynamicReferenceable::~CDynamicReferenceable()\r
19 {\r
20 \r
21 }\r
22 \r
23 void CDynamicReferenceable::AddRef(void)\r
24 {\r
25         // \8eQ\8fÆ\83J\83E\83\93\83g\83C\83\93\83N\83\8a\83\81\83\93\83g\r
26         m_dwRefCount++;\r
27 }\r
28 \r
29 void CDynamicReferenceable::ReleaseRef(void)\r
30 {\r
31         // \8eQ\8fÆ\83J\83E\83\93\83g\83f\83N\83\8a\83\81\83\93\83g\r
32         if(m_dwRefCount){\r
33                 // \83C\83\93\83X\83^\83\93\83X\8aJ\95ú\r
34                 if(!(--m_dwRefCount))delete this;\r
35                 }\r
36 #ifdef _DEBUG\r
37         else{\r
38                 ::DebugBreak();\r
39                 }\r
40 #endif\r
41 }\r
42 \r
43 \r
44 //////////////////////////////////////////////////////////////////////\r
45 // CCriticalLock \83N\83\89\83X\82Ì\8d\\92z/\8fÁ\96Å\r
46 //////////////////////////////////////////////////////////////////////\r
47 \r
48 CCriticalLock::CCriticalLock()\r
49 {\r
50         // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8f\89\8aú\89»\r
51         pthread_mutex_init(&m_CriticalSection, NULL);\r
52 }\r
53 \r
54 CCriticalLock::~CCriticalLock()\r
55 {\r
56         // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8dí\8f\9c\r
57         pthread_mutex_destroy(&m_CriticalSection);\r
58 }\r
59 \r
60 void CCriticalLock::Lock(void)\r
61 {\r
62         // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8eæ\93¾\r
63         pthread_mutex_lock(&m_CriticalSection);\r
64 }\r
65 \r
66 void CCriticalLock::Unlock(void)\r
67 {\r
68         // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8aJ\95ú\r
69         pthread_mutex_unlock(&m_CriticalSection);\r
70 }\r
71         \r
72         \r
73 //////////////////////////////////////////////////////////////////////\r
74 // CBlockLock \83N\83\89\83X\82Ì\8d\\92z/\8fÁ\96Å\r
75 //////////////////////////////////////////////////////////////////////\r
76         \r
77 CBlockLock::CBlockLock(CCriticalLock *pCriticalLock)\r
78         : m_pCriticalLock(pCriticalLock)\r
79 {\r
80         // \83\8d\83b\83N\8eæ\93¾\r
81         m_pCriticalLock->Lock();\r
82 }\r
83 \r
84 CBlockLock::~CBlockLock()\r
85 {\r
86         // \83\8d\83b\83N\8aJ\95ú\r
87         m_pCriticalLock->Unlock();\r
88 }\r