Share via


InitializeCriticalSection 함수(synchapi.h)

중요한 섹션 개체를 초기화합니다.

구문

void InitializeCriticalSection(
  [out] LPCRITICAL_SECTION lpCriticalSection
);

매개 변수

[out] lpCriticalSection

중요한 섹션 개체에 대한 포인터입니다.

반환 값

이 함수는 값을 반환하지 않습니다.

Windows Server 2003 및 Windows XP: 메모리 부족 상황에서 InitializeCriticalSectionSTATUS_NO_MEMORY 예외를 발생시킬 수 있습니다. Windows Vista부터는 이 예외가 제거되었으며 메모리 부족 상황에서도 InitializeCriticalSection 이 항상 성공합니다.

설명

단일 프로세스의 스레드는 상호 배제 동기화에 중요한 섹션 개체를 사용할 수 있습니다. 스레드가 중요한 섹션의 소유권을 얻는 순서에 대한 보장은 없지만 시스템은 모든 스레드에 공평합니다.

프로세스는 CRITICAL_SECTION 형식의 변수를 선언하여 수행할 수 있는 중요한 섹션 개체에 사용되는 메모리를 할당합니다. 중요한 섹션을 사용하기 전에 프로세스의 일부 스레드가 개체를 초기화해야 합니다.

중요한 섹션 개체가 초기화된 후 프로세스의 스레드는 EnterCriticalSection, TryEnterCriticalSection 또는 LeaveCriticalSection 함수에서 개체를 지정하여 공유 리소스에 대한 상호 배타적 액세스를 제공할 수 있습니다. 서로 다른 프로세스의 스레드 간에 유사한 동기화를 수행하려면 뮤텍스 개체를 사용합니다.

중요한 섹션 개체를 이동하거나 복사할 수 없습니다. 또한 프로세스는 개체를 수정하지 않아야 하지만 논리적으로 불투명한 것으로 처리해야 합니다. 중요한 섹션 함수만 사용하여 중요한 섹션 개체를 관리합니다. 중요 섹션 사용을 마쳤으면 DeleteCriticalSection 함수를 호출합니다.

중요한 섹션 개체를 삭제해야 다시 초기화할 수 있습니다. 이미 초기화된 중요한 섹션을 초기화하면 정의되지 않은 동작이 발생합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 synchapi.h(Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2에 Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

CreateMutex

중요 섹션 개체

DeleteCriticalSection

EnterCriticalSection

InitializeCriticalSectionAndSpinCount

LeaveCriticalSection

동기화 함수

TryEnterCriticalSection

VBS Enclave에서 사용할 수 있는 Vertdll API