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、 TryEnterCriticalSection 或 LeaveCriticalSection 函数中指定对象,以提供对共享资源的相互独占访问。 对于不同进程的线程之间的类似同步,请使用互斥对象。
无法移动或复制关键节对象。 进程也不能修改 对象,但必须将其视为逻辑不透明。 仅使用关键节函数来管理关键节对象。 使用完关键部分后,调用 DeleteCriticalSection 函数。
必须先删除关键节对象,然后才能重新初始化它。 初始化已初始化的关键节会导致未定义的行为。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 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 |