LeaveCriticalSection 函数 (synchapi.h)
释放指定关键节对象的所有权。
语法
void LeaveCriticalSection(
[in, out] LPCRITICAL_SECTION lpCriticalSection
);
参数
[in, out] lpCriticalSection
指向关键节对象的指针。
返回值
无
备注
单个进程的线程可以使用关键节对象进行互斥同步。 进程负责分配关键节对象使用的内存,可以通过声明 CRITICAL_SECTION类型的变量来执行此操作。 在使用关键节之前,进程的某个线程必须调用 InitializeCriticalSection 或 InitializeCriticalSectionAndSpinCount 函数来初始化对象。
线程使用 EnterCriticalSection 或 TryEnterCriticalSection 函数获取关键节对象的所有权。 若要释放其所有权,线程必须在每次进入关键部分时调用 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 |