LeaveCriticalSection 函数 (synchapi.h)

释放指定关键节对象的所有权。

语法

void LeaveCriticalSection(
  [in, out] LPCRITICAL_SECTION lpCriticalSection
);

参数

[in, out] lpCriticalSection

指向关键节对象的指针。

返回值

备注

单个进程的线程可以使用关键节对象进行互斥同步。 进程负责分配关键节对象使用的内存,可以通过声明 CRITICAL_SECTION类型的变量来执行此操作。 在使用关键节之前,进程的某个线程必须调用 InitializeCriticalSectionInitializeCriticalSectionAndSpinCount 函数来初始化对象。

线程使用 EnterCriticalSectionTryEnterCriticalSection 函数获取关键节对象的所有权。 若要释放其所有权,线程必须在每次进入关键部分时调用 LeaveCriticalSection 一次。

如果线程在没有指定关键节对象的所有权时调用 LeaveCriticalSection ,则会发生错误,可能导致使用 EnterCriticalSection 的另一个线程无限期等待。

释放关键节对象的所有权后,LeaveCriticalSection 不会访问指定的CRITICAL_SECTION结构。

进程的任何线程都可以使用 DeleteCriticalSection 函数释放在初始化关键节对象时分配的系统资源。 调用此函数后,不能再使用关键节对象进行同步。

示例

有关使用 LeaveCriticalSection 的示例,请参阅 使用关键节对象

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 synchapi.h (包括 Windows Server 2003 上的 Windows.h、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

关键节对象

DeleteCriticalSection

EnterCriticalSection

InitializeCriticalSection

InitializeCriticalSectionAndSpinCount

同步函数

TryEnterCriticalSection

VBS enclave 中可用的 Vertdll API