[英]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.