forked from somma/_MyLib
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAKSyncObjs.cpp
More file actions
93 lines (75 loc) · 2.3 KB
/
AKSyncObjs.cpp
File metadata and controls
93 lines (75 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*-----------------------------------------------------------------------------
* AKSyncObjs.cpp
*-----------------------------------------------------------------------------
*
*-----------------------------------------------------------------------------
* All rights reserved by Noh Yong Hwan (fixbrain@gmail.com, unsorted@msn.com)
**---------------------------------------------------------------------------*/
#include "StdAfx.h"
#include "AKSyncObjs.h"
#include <crtdbg.h>
/** -----------------------------------------------------------------------
CriticalSection Wrapper 클래스
-------------------------------------------------------------------------*/
/** -----------------------------------------------------------------------
\brief 임계영역 진입
-------------------------------------------------------------------------*/
BOOL AKCriticalSection::Enter(void)
{
_ASSERTE(TRUE == m_initialized);
if (FALSE == m_initialized)
{
return FALSE;
}
__try
{
::EnterCriticalSection(&m_CriticalSection);
}
__except( EXCEPTION_EXECUTE_HANDLER )
{
return FALSE;
}
return TRUE;
}
/** -----------------------------------------------------------------------
\brief 임계영역 탈출
-------------------------------------------------------------------------*/
BOOL AKCriticalSection::Leave(void)
{
if (TRUE == m_initialized)
{
::LeaveCriticalSection(&m_CriticalSection);
}
return TRUE;
}
/** -----------------------------------------------------------------------
\brief initialize procedure
-------------------------------------------------------------------------*/
BOOL AKCriticalSection::Init(void)
{
if (TRUE == m_initialized)
{
return TRUE;
}
__try
{
InitializeCriticalSection(&m_CriticalSection);
}
__except( EXCEPTION_EXECUTE_HANDLER )
{
return FALSE;
}
m_initialized = TRUE;
return TRUE; // for success
}
/** -----------------------------------------------------------------------
\brief terminate procedure
-------------------------------------------------------------------------*/
void AKCriticalSection::Terminate(void)
{
if (TRUE == m_initialized)
{
DeleteCriticalSection(&m_CriticalSection);
m_initialized = FALSE;
}
}