크리티컬 섹션(Critical Section)
내부적으로 Interlock을 사용하므로 쓰레드 동기화 중에서 가장 빠른 속도로 동작한다.
뮤텍스와 다른 점은 단일 프로세서에 한해서만 동작이 가능하다는 것.
사용 방법은 아래와 같다.
* WIN API
Critical Section 초기화
void WINAPI InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
Critical Section 릴리즈
void WINAPI DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
Lock 설정
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
Lock 해제
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
Example)
CRITICAL_SECTION m_cs;
InitializeCriticalSection(&m_cs);
EnterCriticalSection(&m_cs);
동기화가 필요한 코드....
LeaveCriticalSection(&m_cs);
EnterCriticalSection(&m_cs);
동기화가 필요한 코드....
LeaveCriticalSection(&m_cs);
DeleteCriticalSection(&m_cs);
* MFC
CCriticalSection g_CS;
g_CS.Lock();
동기화가 필요한 코드...
g_CS.Unlock();
'프로그래밍 > C C++' 카테고리의 다른 글
메모리 영역 (0) | 2013.04.20 |
---|---|
enum 열거형 (0) | 2013.03.22 |
% 서식문자 정리 (0) | 2013.03.01 |
프로그래밍/바이트 오더(byte order) (0) | 2011.03.15 |
프로그래밍/assert (0) | 2010.03.05 |