[MFC] CCriticalSection 로 공유 메모리 동시 접근 막기
멀티 쓰레드 코딩을 하다보면 쓰레드에서
공유 메모리(데이터)에 접근할 일이 많이 생긴다
이럴때 시간 순서대로 순차적으로 접근할 수도 있겠지만
동시에 같은 메모리나 데이터에 접근하여 데이터 수정 및 읽기가 진행되는 경우
데이터에 대한 오류가 발생한다 이를 방지하기 위해 MFC에서 사용 하는 것이
CCriticalSection 클래스이다.
사용 방법은 간단하다.
CCriticalSection를 멤버 변수나 지역 변수로 선언해서 공유 메모리에 접근할 때
Lock() 함수를 호출 하고 사용이 끝난뒤에 Unlock() 함수를 호출하면 된다.
ex)
CCriticalSection m_cs; // CCriticalSection 객체 선언
int m_nShareData; // 공유 메모리 선언
m_cs.Lock();
m_nShareData + 2; // 공유 메모리 작업 실행
.
.
m_cs.Unlock();
이런식으로 작성하면 동시에 공유 메모리에 접근하는 것을 막아준다.
공유 메모리(데이터)에 접근할 일이 많이 생긴다
이럴때 시간 순서대로 순차적으로 접근할 수도 있겠지만
동시에 같은 메모리나 데이터에 접근하여 데이터 수정 및 읽기가 진행되는 경우
데이터에 대한 오류가 발생한다 이를 방지하기 위해 MFC에서 사용 하는 것이
CCriticalSection 클래스이다.
사용 방법은 간단하다.
CCriticalSection를 멤버 변수나 지역 변수로 선언해서 공유 메모리에 접근할 때
Lock() 함수를 호출 하고 사용이 끝난뒤에 Unlock() 함수를 호출하면 된다.
ex)
CCriticalSection m_cs; // CCriticalSection 객체 선언
int m_nShareData; // 공유 메모리 선언
m_cs.Lock();
m_nShareData + 2; // 공유 메모리 작업 실행
.
.
m_cs.Unlock();
이런식으로 작성하면 동시에 공유 메모리에 접근하는 것을 막아준다.
댓글
댓글 쓰기