gpt4 book ai didi

c++ - std::mutex 最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:07 25 4
gpt4 key购买 nike

因为当抛出异常时,唯一确保运行的代码是析构函数,这样的代码可能会产生内存泄漏

std::mutex foo;
foo.lock();
// My code which might throw an exception
foo.unlock();

做类似的事情是否是最佳实践,或者是否有其他更好的选择?这个想法是利用 RAII 来确保在抛出异常时释放互斥量。

std::mutex foo;
{
std::lock_guard<std::mutex>(foo);
// My code which might throw an exception
}

最佳答案

Is it a best practice do something similar to this?

std::mutex foo;
{
std::lock_guard<std::mutex>(foo);
// My code which might throw an exception
}

不!您正在此处创建一个未命名的临时变量,其生命周期在行尾结束。相反,请确保该对象有一个名称,使其生命周期符合其范围。

std::mutex foo;
{
std::lock_guard<std::mutex> NEVER_FORGET_THIS_NAME(foo);
// My code which might throw an exception
}

但除此之外,通常 - 是的,在这种情况下使用 RAII 是一种很好的做法。还要注意未命名锁卫错误并不少见,看看here .

关于c++ - std::mutex 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56645320/

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