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
3 //////////////////////////////////////////////////////////////////////
\r
5 #include "TsUtilClass.h"
\r
8 //////////////////////////////////////////////////////////////////////
\r
9 // CDynamicReferenceable
\83N
\83\89\83X
\82Ì
\8d\
\92z/
\8fÁ
\96Å
\r
10 //////////////////////////////////////////////////////////////////////
\r
12 CDynamicReferenceable::CDynamicReferenceable()
\r
18 CDynamicReferenceable::~CDynamicReferenceable()
\r
23 void CDynamicReferenceable::AddRef(void)
\r
25 //
\8eQ
\8fÆ
\83J
\83E
\83\93\83g
\83C
\83\93\83N
\83\8a\83\81\83\93\83g
\r
29 void CDynamicReferenceable::ReleaseRef(void)
\r
31 //
\8eQ
\8fÆ
\83J
\83E
\83\93\83g
\83f
\83N
\83\8a\83\81\83\93\83g
\r
33 //
\83C
\83\93\83X
\83^
\83\93\83X
\8aJ
\95ú
\r
34 if(!(--m_dwRefCount))delete this;
\r
44 //////////////////////////////////////////////////////////////////////
\r
45 // CCriticalLock
\83N
\83\89\83X
\82Ì
\8d\
\92z/
\8fÁ
\96Å
\r
46 //////////////////////////////////////////////////////////////////////
\r
48 CCriticalLock::CCriticalLock()
\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
54 CCriticalLock::~CCriticalLock()
\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
60 void CCriticalLock::Lock(void)
\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
66 void CCriticalLock::Unlock(void)
\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
73 //////////////////////////////////////////////////////////////////////
\r
74 // CBlockLock
\83N
\83\89\83X
\82Ì
\8d\
\92z/
\8fÁ
\96Å
\r
75 //////////////////////////////////////////////////////////////////////
\r
77 CBlockLock::CBlockLock(CCriticalLock *pCriticalLock)
\r
78 : m_pCriticalLock(pCriticalLock)
\r
80 //
\83\8d\83b
\83N
\8eæ
\93¾
\r
81 m_pCriticalLock->Lock();
\r
84 CBlockLock::~CBlockLock()
\r
86 //
\83\8d\83b
\83N
\8aJ
\95ú
\r
87 m_pCriticalLock->Unlock();
\r