본문 바로가기
개발

크리티컬 섹션을 이용한 스레드 동기화

by 솜씨제이 2007. 12. 18.
다중 스레드 환경의 프로그램에서 여러 스레드 사이에서 공유하는 리소스를 사용한다면 반드시 스레드 간 동기화를 해줘야 한다. Windows 환경이라면 스레드 동기화를 위해서 가장 많이 사용하는 동기화 방법은 크리티컬 섹션일 것이다.

// 크리티컬 섹션 변수
CRITICAL_SECTION cs;
// 크리티컬 섹션 초기화
InitializeCriticalSection(&cs);
// 공유 리소스를 사용하는 스레드 사용
...
// 모든 스레드가 종료된 후 크리티컬 섹션 삭제
DeleteCriticalSection(&cs)
DWORD WINAPI ThreadProc(LPVOID pParam)
{
 ...
 // 크리티컬 섹션 소유권 가져오기
 EnterCriticalSection(&cs);
 // 공유 리소스에 접근
 ...
 // 크리티컬 섹션 소유권 해제하기
 LeaveCriticalSection(&cs);
  ...
}

댓글