InitializeCriticalSection()
하나의 공통 데이터(변수나 기타 등등) 를 특정 thread가 사용중이라면
다른 Thread들이 접근하지 못하도록 EnterCriticalSection() 로 락을 겁니다.
그때 그 CriticalSection, 임계영역이라고 합니다.
그 영역을 초기화 해주는 부분입니다.
CriticalSection은 Multi Thread에서 가장 일반적으로 사용되는 방법이랍니다.
Multi Thread 에서 동기화하는 방법으로는 CriticalSection, Mutex, Semaphore 방법이 있습니다.
Win32에서의 임계영역
Win32에 대한 코드는 모두 C++를 사용했다. Win32에서의 임계영역은 다음과 같은 순서로 한다
-------------------------------------------------------------
//임계영역을 선언한다.
CRITICAL_SECTION cs;
//임계영역을 초기화 한다.
InitializeCriticalSection(&cs);
//임계영역으로 들어간다. 여기서는 한 번에 하나의 Thread만
//임계영역에 들어갈 수 있으며, 이미 임계영역에 들어간
//Thread가 있으면 다른 Thread는 여기서 대기한다.
EnterCriticalSection(&cs);
try {
// 한번에 하나의 Thread에 의해서만 실행될 수 있는 블럭이다.
}
finally {
LeaveCriticalSection(&cs); //임계영역을 빠져나온다.
}
DeleteCriticalSection(&cs); //임계영역을 정리한다.
[출처] InitializeCriticalSection() 간단 설명 |작성자 미니187
'Development > C/C++' 카테고리의 다른 글
[Semaphore] (0) | 2011.12.01 |
---|---|
[Mutex] (0) | 2011.12.01 |
[시스템 함수 정리] (0) | 2011.11.30 |
[Mutex Thread 동기화 예제] (0) | 2011.11.30 |
[Sleep함수] (0) | 2011.11.29 |