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

标签 c++ window mutex handle

我正在使用适用于 Windows 的 C++ 进行编程,并且我有一个互斥锁的 HANDLE 对象,定义为:

static HANDLE Instance_Mutex;

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

Instance_Mutex = CreateMutex(NULL,FALSE,NULL);

已被调用。

如果只是锁定它,如果不是,则在此HANDLE上创建互斥锁,然后锁定它。那么正确的做法是什么?

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

最佳答案

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

但是,将其显式初始化为 nullptr 会是更好的风格。

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

关于c++ - 我如何知道 HANDLE 对象是否已初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25280878/

相关文章:

javascript - 是否可以使用 node.js 创建桌面应用程序?

c++ - 需要互斥量的情况?

c# - Solaris 上的单声道编译

c++ - boost::threads 执行顺序

c++ - P线程和互斥体;锁定数组的一部分

c++ - 无法在QQuickWindow中接收精确的笔输入

c++ - 如何在 UML 中表示从模板参数的继承?

javascript - 从父窗口的新选项卡中的弹出窗口打开链接

c++ - 如何检查函数的模板参数是否具有某种类型?

.net - 如何在窗口显示前计算 ActualWidth ActualHeight