Create TOC

2007년 2월 5일

Win32/Critical section에 대한 몇 가지 주의 사항

시스템 가용 메모리 부족시

문제

InitializeCriticalSection()함수를 이용해서 만들어진 critical section은 시스템의 가용메모리가 부족하면 EnterCriticalSection()할때 system exception이 발생하게 된다.

해결

InitializeCriticalSection() 함수 대신 InitializeCriticalSectionAndSpinCount() 함수를 사용한다. 단순하게 SEH를 사용하면 될 것 같지만 SEH는 문제를 해결해 주기 보다는 감추는 경우가 많기 때문에 되도록 사용하지 않는 것이 좋다.

Vista에서 제한점

critical section으로 lock걸린 구역안에서 Sleep() 함수를 사용하면 안된다.