[英]boost scoped_lock return behavior
两个代码段是否产生相同的行为? 我认为除非有我缺少的东西,否则它会做到。 注意:我在所有地方都使用了此指针,只是为了阐明所有变量都是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()的调用之间返回return语句; 喜欢:
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_lock
保护的析构函数,以确保始终释放关联的互斥量。
假设int a = this->member;
是相同的int a = this->member;
不会抛出异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.