【发布时间】:2009-04-29 14:31:20
【问题描述】:
我的类中有一个 CCriticalSection 对象,用于将异常同步到方法。我将它与 CSingleLock 对象一起使用,如下所示:
void f()
{
try
{
CSingleLock lock(&m_synchronizer, TRUE);
.....
.....
}
catch(SomeException )
{
}
catch(...)
{
}
}
如果任何语句引发 C++ 异常,则临界区对象已正确解锁,但是如果我遇到任何其他类型的异常(例如访问冲突),有什么方法可以解锁我的临界区吗?我认为 RAII 在这里不会有帮助,因为堆栈展开不会发生。在退出函数 f 后,我可以做些什么来防止关键部分处于锁定状态?
【问题讨论】:
标签: c++ multithreading exception mfc