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/

相关文章:

c++ - 将 std::function<int(int)> 赋值给 std::function<const int&(const int& x)>

c++ - 通过单击内部小部件而不是标题栏来移动窗口

window - Inno安装程序更改c :\permission

c# - 使用进程间同步对象同步 2 个进程 - Mutex 或 AutoResetEvent

c++ - 如何同步三个线程?

c++ - 更新后如何修改exe文件中的代码

c++ - 将 ID2D1Effect 输出存储在 ID2D1Bitmap/Image 中以便稍后绘制?

c++ - GCC 5 及更高版本中的 AVX2 支持

linux - 我可以在没有合成管理器的情况下创建非矩形窗口吗?

c++ - emplace_back 包含互斥锁的对象