【发布时间】:2021-08-20 09:24:59
【问题描述】:
我有一种情况,大部分时间都需要锁定 std::mutex,除非在特定范围内。我在想应该有一个与std::unique_lock相反的情况,即在构造时解锁()和在破坏时锁定()。
应该很简单
template<typename M>
class unique_unlock
{
public:
unique_unlock(M& m) : m_(m) {
m_.unlock();
}
~unique_unlock() {
m_.lock();
}
private:
M& m_;
};
这种方法有什么问题吗?
【问题讨论】:
-
我看不到直接的问题,除非可能存在很大的死锁可能性。但这应该“通过设计”解决。我会让构造函数“显式”并删除所有其他构造函数(默认、复制、移动)并删除 operator=
标签: c++ synchronization mutex