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机智,还是有其他优势?
使用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)
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |