다중 스레드 환경의 프로그램에서 여러 스레드 사이에서 공유하는 리소스를 사용한다면 반드시 스레드 간 동기화를 해줘야 한다. Windows 환경이라면 스레드 동기화를 위해서 가장 많이 사용하는 동기화 방법은 크리티컬 섹션일 것이다.
// 크리티컬 섹션 변수
CRITICAL_SECTION cs;
CRITICAL_SECTION cs;
// 크리티컬 섹션 초기화
InitializeCriticalSection(&cs);
InitializeCriticalSection(&cs);
// 공유 리소스를 사용하는 스레드 사용
...
...
// 모든 스레드가 종료된 후 크리티컬 섹션 삭제
DeleteCriticalSection(&cs)
DeleteCriticalSection(&cs)
DWORD WINAPI ThreadProc(LPVOID pParam)
{
...
{
...
// 크리티컬 섹션 소유권 가져오기
EnterCriticalSection(&cs);
EnterCriticalSection(&cs);
// 공유 리소스에 접근
...
...
// 크리티컬 섹션 소유권 해제하기
LeaveCriticalSection(&cs);
LeaveCriticalSection(&cs);
...
}
}
'개발' 카테고리의 다른 글
Visual C++ 2005 CRT DLL 버전 충돌 문제 (0) | 2008.09.30 |
---|---|
사용자 권한 ActiveX 컨트롤 설치 (2) | 2008.03.14 |
실행 중인 IE창 모두 닫기 (0) | 2007.12.14 |
VC6의 CHtmlView 버그 (0) | 2007.09.05 |
Windows Installer로 프로그램 추가/제거에서 안 보이게 설치하기 (0) | 2007.08.06 |
댓글