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); //임계영역을 정리한다.

'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
Posted by cyj4369
,