当我运行以下,我得到一个异常:Process returned -1073741819 (0xC0000005)
和程序崩溃。std :: mutex初始化异常
#include <mutex>
class MutexTest
{
public:
static std::mutex GlobalMutex;
};
std::mutex MutexTest::GlobalMutex;
int main()
{
MutexTest test;
test.GlobalMutex.unlock(); //makes it throw.
return 0;
}
但是,如果我做的:
int main()
{
StaticMutexTest test;
test.GlobalMutex.lock();
test.GlobalMutex.unlock();
test.GlobalMutex.unlock();
test.GlobalMutex.unlock();
return 0;
}
它运行得很好。我怎样才能初始化互斥量,而不是先锁定它?我在某处读到0xC0000005
表示该变量未初始化。该文件表示,互斥锁必须先锁定,然后才能解锁,并且解锁互斥锁的解锁属于未定义行为。但是我没有什么可以测试它是否被锁定。
任何想法?
您的互斥锁已初始化,除了您无法解锁()您的线程尚未锁定的互斥锁之外,此处没有任何问题。 – nos