我如何知道HANDLE对象是否已初始化?

时间:2014-08-13 07:55:12

标签: c++ window mutex handle

我在C ++ for Windows中进行编程,并且我有一个HANDLE对象到一个互斥量定义为:

static HANDLE Instance_Mutex;

我想检查这个HANDLE是否由互斥对象初始化;即是代码:

Instance_Mutex = CreateMutex(NULL,FALSE,NULL);

已被召唤。

如果它只是锁定它,如果没有,请在此HANDLE上创建互斥锁,然后将其锁定。那么适当的方法是什么?

HANDLE对象在尚未创建时是否具有特定值?

1 个答案:

答案 0 :(得分:2)

如果HANDLE是全局的,那么它将被初始化为零(即它将是nullptr)。

然而,将它显式初始化为nullptr将是一种优越的风格。

顺便说一下,nullptr也是CreateMutex失败时返回的内容。因此,即使在那时,这个不变量(nullptr,如果HANDLE不是互斥锁)也将保持不变。