在Java中:
Lock lock = new ReentrantLock();
try{
lock.lock();
someFunctionLikelyToCauseAnException();
}
catch(e){...}
finally {
lock.unlock();
}
我的问题是,通过上面的示例,我们知道锁将始终被解锁,因为finally会始终执行,但在C++中有什么保证呢?
mutex m;
m.lock();
someFunctionLikelyToCauseAnException();
/// ????
这将如何运作,为什么会这样?
std::lock_guard
实现RAII。std::lock_guard
对象的析构函数会自动解锁其所持有的互斥量。 - Yksisarvinen