我在我们的 SW 中遇到了这段代码,它依赖析构函数来释放锁。然而,当我运行程序时,析构函数从未被调用,锁也从未被释放。
bool someClass::someFunc()
{
Locker lock(m_lock); //take lock in constructor, release lock in Locker destructor
return something;
}
这里出了什么问题?编译器可以将此函数优化为内联吗?
class Locker {
public:
Locker(Lock& lock) : m_lock(lock) { m_lock.lock(); }
~Locker() { m_lock.unlock(); }
protected:
Lock& m_lock;
}