프로그래밍/C C++

크리티컬 섹션(Critical Section)

우진샘 2013. 3. 21. 22:57

크리티컬 섹션(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