5. CCriticalSection 클래스

2024. 4. 17. 16:15[C++]/MFC 프로그래밍 기초

CCriticalSection 

  • 멀티 쓰레드 프로그래밍을 할 때 공유 메모리에 동시 접근을 막아주는 MFC 클래스
  • 멀티스레드 환경에서 공유된 자원에 대한 접근을 제어하기 위해 사용된다.
  1. 공유 데이터 보호: 여러 스레드가 공유된 데이터에 접근할 때 데이터의 일관성을 보장하기 위해 사용된다. CCriticalSection을 사용하여 한 번에 하나의 스레드만이 데이터에 접근하도록 보호할 수 있다.
  2. 임계 영역 보호: 임계 영역이라고도 불리는 코드 부분에서 여러 스레드가 동시에 실행되지 않도록 보호할 때 사용된다. 

 

Lock과 UnLock의 사용

  1. Lock (Enter):
    • 임계 영역에 진입하기 전에 호출되는 메서드
    • 다른 스레드가 해당 임계 영역에 들어가지 못하도록 락을 설정
    • Lock 메서드를 호출한 스레드는 해당 CCriticalSection 객체의 임계 영역에 들어갈 수 있다. 다른 스레드가 이미 임계 영역에 들어가 있다면, Lock 메서드를 호출한 스레드는 임계 영역이 Lock을 해제할 때까지 대기한다.
  2. Unlock (Leave):
    • 임계 영역에서 빠져나오고자 할 때 호출되는 메서드입니다.
    • Lock을 해제하여 다른 스레드가 해당 임계 영역에 접근할 수 있도록 합니다.
    • Unlock 메서드를 호출한 스레드는 임계 영역을 빠져나온 후 다른 스레드가 해당 영역에 들어갈 수 있도록 한다.
CCriticalSection  cs;              // CCriticalSection 객체 선언
int ShareData;                  // 공유 메모리 선언

cs.Lock(); 
ShareData + 2; // 공유 메모리 작업 실행
         .
         .
cs.Unlock();

 

반응형