gpt4 book ai didi

c++ - 没有范围保护的安全锁定/解锁

转载 作者:行者123 更新时间:2023-11-30 00:51:28 30 4
gpt4 key购买 nike

我必须处理设计限制(依赖性问题)以不对互斥体使用范围保护。

示例代码:

template<typename MutexType>
class Test
{
MutexType myMutex;

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

有没有其他安全的方法来处理没有范围保护的多次返回?在这个概念被广泛使用之前,这是如何运作的?考虑到异常被禁用,goto 是一个不错的选择而不是 return 吗?

最佳答案

正如@VladLazarenko 在评论中建议的那样,最好的方法是为此简单地编写您自己的作用域守卫。

但是,如果由于某些不明原因无法做到这一点,您可以简单地移动所有 //code with many returns here depending on conditions进入一个单独的函数,然后在 Lock() 之间调用该函数和 Unlock()电话。

您提到您禁用了异常(exception);如果不是这种情况,上述解决方案(嵌套函数)将需要额外的 try ... catch在外部函数中构造,那么它也能正常工作。

关于c++ - 没有范围保护的安全锁定/解锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21729372/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com