我正在使用适用于 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/