簡體   English   中英

提升scoped_lock返回行為

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM