OSDN Git Service

change tunerec path.
[rec10/rec10-git.git] / b25-remote / TsUtilClass.cpp
1 // TsUtilClass.cpp: TSユーティリティークラスのインプリメンテーション
2 //
3 //////////////////////////////////////////////////////////////////////
4
5 #include "TsUtilClass.h"
6
7
8 //////////////////////////////////////////////////////////////////////
9 // CDynamicReferenceable クラスの構築/消滅
10 //////////////////////////////////////////////////////////////////////
11
12 CDynamicReferenceable::CDynamicReferenceable()
13         : m_dwRefCount(0UL)
14 {
15
16 }
17
18 CDynamicReferenceable::~CDynamicReferenceable()
19 {
20
21 }
22
23 void CDynamicReferenceable::AddRef(void)
24 {
25         // 参照カウントインクリメント
26         m_dwRefCount++;
27 }
28
29 void CDynamicReferenceable::ReleaseRef(void)
30 {
31         // 参照カウントデクリメント
32         if(m_dwRefCount){
33                 // インスタンス開放
34                 if(!(--m_dwRefCount))delete this;
35                 }
36 #ifdef _DEBUG
37         else{
38                 ::DebugBreak();
39                 }
40 #endif
41 }
42
43
44 //////////////////////////////////////////////////////////////////////
45 // CCriticalLock クラスの構築/消滅
46 //////////////////////////////////////////////////////////////////////
47
48 CCriticalLock::CCriticalLock()
49 {
50         // クリティカルセクション初期化
51         pthread_mutex_init(&m_CriticalSection, NULL);
52 }
53
54 CCriticalLock::~CCriticalLock()
55 {
56         // クリティカルセクション削除
57         pthread_mutex_destroy(&m_CriticalSection);
58 }
59
60 void CCriticalLock::Lock(void)
61 {
62         // クリティカルセクション取得
63         pthread_mutex_lock(&m_CriticalSection);
64 }
65
66 void CCriticalLock::Unlock(void)
67 {
68         // クリティカルセクション開放
69         pthread_mutex_unlock(&m_CriticalSection);
70 }
71         
72         
73 //////////////////////////////////////////////////////////////////////
74 // CBlockLock クラスの構築/消滅
75 //////////////////////////////////////////////////////////////////////
76         
77 CBlockLock::CBlockLock(CCriticalLock *pCriticalLock)
78         : m_pCriticalLock(pCriticalLock)
79 {
80         // ロック取得
81         m_pCriticalLock->Lock();
82 }
83
84 CBlockLock::~CBlockLock()
85 {
86         // ロック開放
87         m_pCriticalLock->Unlock();
88 }