我必须处理设计限制(依赖问题),以避免对互斥对象使用范围保护。
样本代码:
template<typename MutexType>
class Test
{
MutexType myMutex;
public:
void f()
{
myMutex.Lock();
//code with many returns here depending on conditions
myMutex.Unlock();
}
};在没有范围保护的情况下,是否有其他安全的方法来处理多个回报?在这个概念被广泛使用之前,这个概念是如何工作的?考虑到异常是禁用的,goto是一个很好的选项而不是return吗?
发布于 2014-02-12 13:39:04
正如@VladLazarenko在评论中所建议的那样,最好的方法就是为这个问题编写自己的范围保护程序。
但是,如果由于某种原因这是不可能的,那么只需将所有//code with many returns here depending on conditions移动到一个单独的函数中,只需在Lock()和Unlock()调用之间调用该函数即可。
您提到的异常是禁用的;如果不是这样的话,上面的解决方案(嵌套函数)将需要在外部函数中添加一个try ... catch构造,那么它也可以工作。
https://stackoverflow.com/questions/21729372
复制相似问题