InitializeCriticalSection 函式 (synchapi.h)

初始化重要區段物件。

語法

void InitializeCriticalSection(
  [out] LPCRITICAL_SECTION lpCriticalSection
);

參數

[out] lpCriticalSection

重要區段物件的指標。

傳回值

此函式不會傳回值。

Windows Server 2003 和 Windows XP: 在記憶體不足的情況下, InitializeCriticalSection 可能會引發 STATUS_NO_MEMORY 例外狀況。 從 Windows Vista 開始,已排除此例外狀況, 而且 InitializeCriticalSection 一律會成功,即使記憶體不足的情況也一樣。

備註

單一進程的線程可以使用重要區段物件進行相互排除同步處理。 對於線程取得重要區段擁有權的順序並不保證,不過,系統會對所有線程都公平。

此程式負責配置重要區段物件所使用的記憶體,其方式是宣告類型 為 CRITICAL_SECTION的變數。 使用重要區段之前,進程的某些線程必須初始化 物件。

初始化重要區段對象之後,進程的線程可以在 EnterCriticalSection、TryEnterCriticalSectionLeaveCriticalSection 函式中指定物件,以提供共用資源的互斥存取權。 如需不同進程線程之間的類似同步處理,請使用 mutex 物件。

無法移動或複製重要區段物件。 此程式也不得修改物件,但必須將它視為邏輯不透明。 僅使用重要區段函式來管理重要區段物件。 當您完成使用關鍵區段時,請呼叫 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)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

CreateMutex

重要區段物件

DeleteCriticalSection

EnterCriticalSection

InitializeCriticalSectionAndSpinCount

LeaveCriticalSection

同步處理函式

TryEnterCriticalSection

VBS 記憶體保護區中可用的 Vertdll API