gpt4 book ai didi

c++ - boost scoped_lock 返回行为

转载 作者:行者123 更新时间:2023-11-28 05:20:23 26 4
gpt4 key购买 nike

这两个代码段是否产生相同的行为?我认为它确实如此,除非我遗漏了什么。注意:我到处都使用这个指针只是为了说明所有变量都是some_class的成员变量

int some_class::some_func()
{
boost::scoped_lock lock(this->m_mutex);
return this->member;
}

int some_class::some_func()
{
this->m_mutex.lock();
int a = this->member;
this->m_mutex.unlock();
return a;
}

最佳答案

一些它们如何做同样的工作但是:这不仅仅是忘记调用 unlock():当你的互斥锁被锁定时可能会发生异常,并且你对 unlock() 的调用可能永远不会到达,即使您在调用 lock() 和调用 unlock() 之间没有任何返回语句;喜欢:

m.lock() // m is a mutex
// do something
foo(); // If this throws an exception,that your mutex won't get unlocked
// do something
m.unlock()

但是在 scoped_lock 的情况下,scoped_lockguard 的析构函数将在堆栈展开期间被调用,确保关联的互斥锁始终被释放。

关于c++ - boost scoped_lock 返回行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647039/

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