首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无作用域保护的安全锁/解锁

无作用域保护的安全锁/解锁
EN

Stack Overflow用户
提问于 2014-02-12 13:32:00
回答 1查看 219关注 0票数 1

我必须处理设计限制(依赖问题),以避免对互斥对象使用范围保护。

样本代码:

代码语言:javascript
复制
template<typename MutexType>
class Test
{
    MutexType myMutex;

public:
    void f()
    {
        myMutex.Lock();
        //code with many returns here depending on conditions
        myMutex.Unlock();
    }
};

在没有范围保护的情况下,是否有其他安全的方法来处理多个回报?在这个概念被广泛使用之前,这个概念是如何工作的?考虑到异常是禁用的,goto是一个很好的选项而不是return吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-12 13:39:04

正如@VladLazarenko在评论中所建议的那样,最好的方法就是为这个问题编写自己的范围保护程序。

但是,如果由于某种原因这是不可能的,那么只需将所有//code with many returns here depending on conditions移动到一个单独的函数中,只需在Lock()Unlock()调用之间调用该函数即可。

您提到的异常是禁用的;如果不是这样的话,上面的解决方案(嵌套函数)将需要在外部函数中添加一个try ... catch构造,那么它也可以工作。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21729372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档