크리티컬섹션
-
윈도우 유저 모드 동기화 CRITICAL_SECTION개발/C·C++ 2019. 11. 4. 03:04
동기화 방법은 크게 유저 모드와 커널 모드가 있다. 커널 모드 동기화의 기능이 굳이 필요한 상황이 아니라면 유저 모드 동기화가 성능이 좋다. 응용 프로그램은 기본적으로 유저 모드에서 동작하기 때문에, 커널 모드 동기화를 사용하면 동기화할 때마다 커널에 접근해야 하므로 성능에 불이익이 생길 수밖에 없다. 유저 모드 동기화 방법은 주로 CRITICAL_SECTION(이하 CS)이 사용된다. 단순하게 변수의 정수값을 증감할 때는 Interlocked 계열 함수를 이용하면 되며 임계 영역을 동기화해야 하는 경우에는 CS로 동기화한다. CS로 동기화를 진행하기 위해서는 일단 CS 객체를 만들어야 한다. 초기화는 매개변수로 CS 객체의 포인터를 넣는 InitializeCriticalSection 함수를 사용하고 아..