怀疑如何锁定助推互斥锁

Gui*_*e07 2 c++ boost mutex

boost::recursive_mutex m;
m.lock();
Run Code Online (Sandbox Code Playgroud)

boost::lock_guard<boost::recursive_mutex> lock( mutex_ );
Run Code Online (Sandbox Code Playgroud)

使用第一张表格是否有优势?第二种形式是否仅提供RAII机智,还是有其他优势?

Cap*_*ous 5

使用lock_guard的优点是它会在超出范围时释放锁.这消除了手动释放锁定的需要并减少了忘记锁定的可能性.

boost::recursive_mutex mylock;

{
    boost::lock_guard<boost::recursive_mutex> lock( mylock );

    // do something

    if(false == do_something())
    {
        return; // "lock" goes out of scope and unlocks 'mylock' from it's destructor.
    }

}
// "lock" has gone out of scope and unlocked 'mylock' from it's destructor.
Run Code Online (Sandbox Code Playgroud)