C++ 具有关联锁的对象或引用/指针的正确术语是什么?

C++ 具有关联锁的对象或引用/指针的正确术语是什么?,c++,concurrency,c++17,C++,Concurrency,C++17,类似于伪代码的东西: 我在想一些关于结帐或访问的事情,如果这能传达其含义的话。检查点可能不好。ConcurrentY或ConcurrentObject通常是ConcurrentMap类的公认名称,但在这种情况下这似乎是错误的,因为锁定机制本身并不像这里那样公开 具有关联锁的对象或引用/指针的正确术语是什么 如果没有使用锁定访问器的私有锁定方法无法访问对象,那么我们说它是线程安全的 例如,如果包装器在创建时获取资源,并像std::lock_guard那样负责销毁时的释放,那么我们就说资源获取就是初

类似于伪代码的东西:


我在想一些关于结帐或访问的事情,如果这能传达其含义的话。检查点可能不好。ConcurrentY或ConcurrentObject通常是ConcurrentMap类的公认名称,但在这种情况下这似乎是错误的,因为锁定机制本身并不像这里那样公开

具有关联锁的对象或引用/指针的正确术语是什么

如果没有使用锁定访问器的私有锁定方法无法访问对象,那么我们说它是线程安全的

例如,如果包装器在创建时获取资源,并像std::lock_guard那样负责销毁时的释放,那么我们就说资源获取就是初始化

但这些术语适用于限定示例中的包装器X,而不是内部对象,因此我不确定这个答案是否真的是您想要的


编辑:通过查看您的用例,这里的正确术语似乎是RAII,因为锁绑定到对象的生命周期,这正是RAII的含义。

我在签出或访问行中考虑了一些东西,如果这可以传达其含义的话。检查点可能不好。ConcurrentY或ConcurrentObject通常是ConcurrentMap类的公认名称,但在这种情况下这似乎是错误的,因为锁机制本身并不是这样公开的。@darune如果所有实例都使用相同的互斥锁,我认为您试图构建的是定时单例,一次只能存在一个实例。另外,当开发人员忘记按所示方式定义getObj返回的值时,您使用的习惯用法通常会导致非常脆弱的代码。随后对getObj的调用可能会导致各种问题,例如,如果模板参数M是std::mutex,则会导致UB。
template<class T, class M>
struct X {
  std::unique_lock<M> associated_lock_;
  T* associated_obj_;
};
{
  X x = getObj();//locking occurs
  //do something with x.associated_obj_
}//x gets unlocked due to scope exit