我有可以在不同模式下打开的对象,其中包括读写。 如果你打开了它念你仍然可以调用这应该称为互斥锁吗?
object->upgradeOpen();
常见的做法是在我们的代码调用
当你写完。
我通常会发现使用我在C++基础知识中学到的互斥概念更容易,您可以在此互斥对象的构造函数和析构函数中完成此升级打开和降级打开。
class ObjectMutex{
public:
ObjectMutex(const Object& o)
: m_o(o)
{
m_o.upgradeOpen();
}
~ObjectMutex(){
m_o.downgradeOpen();
}
private:
Object m_o;
};
唯一的问题是,它并没有真正锁定对象,使其线程安全的,所以我不认为这真的是一个互斥。 是否有另一个公认的名称来称作这种结构?
原理听起来很正确的,但我可以用它来实现我的代码? – turoni
@turoni是的!看看链接的问题,了解如何在可升级的互斥体周围构建RAII封装的示例 – Curious
您可以添加一个代码示例,因为我没有看到如何使用它比使用我写的简单类更容易。 – turoni