qq_28560971 2018-08-07 11:33 采纳率: 14.3%
浏览 2328
已结题

求助 C++ 关于lock_guard锁的问题

情况是这样的,在一个项目中出现这样的死锁错误。
void test1()
{
std::lock_guardstd::mutex guard(g_logmutex);
throw ZHException("abc");
}
void runtest1()
{
try
{
test1();
}
catch (ZHException &e)
{
printf("a\n");
}
try
{
test1();
}
catch (ZHException &e)
{
printf("a\n");
}
}
在第二次try的时候锁住了,请问有可能是什么情况出现这种死锁的情况。
因为项目原因没法贴出源码,想问各位大佬,lock_guard这个锁不是一定会在throw抛出时解锁吗?

而且更尴尬的是,我尝试
void test1()
{
//std::lock_guardstd::mutex guard(g_logmutex);
g_logmutex.lock();
if (true)
{
g_logmutex.unlock();
throw ZHException("abc");
}
g_logmutex.unlock();
}
这样就不会死锁,请问您觉得可能是什么情况导致的呢?

  • 写回答

2条回答

  • devmiao 2018-08-07 15:06
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 手机连接电脑热点显示无ip分配
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大