根据http://msdn.microsoft.com/en-us/library/ms687032%28v=vs.85%29.aspx,WaitForSingleObject()在等待它时处于关闭状态时具有未定义的行为。将互斥量声明为静态文件作用域变量是否安全?
由于我们无法判断静态变量的处理顺序,因此将互斥量声明为具有文件范围的静态变量是否安全?
namespace
{
static HANDLE g_hMutex = CreateMutex(NULL, FALSE, NULL);
}
int CMyClass::Foo() //CMyClass is a singleton
{
int ret = 0;
if (WaitForSingleObject(g_hMutex, 1000) != WAIT_OBJECT_0)
return -1;
//Do something
ReleaseMutex(g_hMutex);
return ret;
}
谢谢!
调用WinMain(或main)之前运行的全局对象(带构造函数)和代码是一个不好的习惯。 – selbie
在您的C++程序中,@selbie WinMain与Windows加载器调用的主函数不同。 –