VS在std::lock_guard 抛出异常Microsoft C++异常:std::system_error
最近在调试程序使用互斥锁std::lock_guard时候抛出异常,经排查原来是在一个线程内,锁了两次,导致异常,记录分享一下;
测试代码
std::mutex g_mut;
void test1()
{
std::cout << "test1 begin!" << std::endl;
std::lock_guard<std::mutex> lock(g_mut);
for (int i = 0 ; i < 10 ; ++i)
{
std::cout << i << std::endl;
}
}
int main(int argc, char** argv)
{
std::cout << "lock0 begin!" << std::endl;
std::lock_guard<std::mutex> lock0(g_mut);
std::thread th1(test1);
Sleep(1000);
std::cout << "lock2 begin!" << std::endl;
//在主线程第二次对g_mut锁住
std::lock_guard<std::mutex> lock2(g_mut);
system("pause");
}
运行结果如图所示,在22行抛出异常