Winapi 为什么Windows没有DeleteConditionVariable()函数与InitializeConditionVariable()一起使用?

Winapi 为什么Windows没有DeleteConditionVariable()函数与InitializeConditionVariable()一起使用?,winapi,condition-variable,Winapi,Condition Variable,我今天正在尝试Windows对条件变量的支持(由Microsoft为Windows Vista和更高版本提供)。要初始化一个条件变量,我调用InitializeConditionVariable(),这非常简单,但我看不到在使用完条件变量后提供任何销毁它的方法。为什么没有DeleteConditionVariable()函数 (我希望API类似于现有的CreateCriticalSection()/DestroyCriticalSection()API)条件变量是一个非常轻量级的对象,它在内部基

我今天正在尝试Windows对条件变量的支持(由Microsoft为Windows Vista和更高版本提供)。要初始化一个条件变量,我调用InitializeConditionVariable(),这非常简单,但我看不到在使用完条件变量后提供任何销毁它的方法。为什么没有DeleteConditionVariable()函数


(我希望API类似于现有的CreateCriticalSection()/DestroyCriticalSection()API)

条件变量是一个非常轻量级的对象,它在内部基于单个全局内核对象,在每个进程的整个生命周期中始终可用。条件变量只包含指向该对象的指针。因此,没有什么需要显式释放,因此不需要删除函数。

我的理解是,没有什么需要释放;初始化条件变量不会分配内存或任何种类的内核对象,并且条件变量本身不会添加到任何种类的列表中。因此,只要当前没有其他线程在使用它,您就可以简单地取消分配它或让它脱离范围。MSDN:“条件变量是用户模式对象”。这意味着你可以创造和摧毁它们。也没有CreateConditionVariable()函数。使用一个变量。@HansPassant:我觉得这不是很有说服力,因为非常相似的表达式“用户对象”包含许多确实需要删除的对象类型。(当然,创建此类对象的文档始终明确说明了如何在必要时删除它们。)