"std::unique_XXX"命名约定背后的基本原理是什么?



似乎有一种小趋势,在某个时候std::unique_XXX命名事物。std::unique_ptr是一个智能指针,只能由一个使用者处理,这是有道理的,因此在这种情况下"唯一"是有意义的。

但至少还有一个班级得到了unique的绰号,我不太确定为什么。为什么叫std::unique_lock?与std::lock_guard相反,它不会更少或更独特,对吧?

我想我错过了一些东西。

我不记得其他班级也跟着什么,但我似乎记得我们还有更多。也许只是std::unique_lock;我忘了。但是,如果还有其他std::unique_XXX类名,为什么将它们命名为该类名?

锁护罩在创建时被锁定,在销毁时解锁。您无法移动或复制它,因此无法转移或共享对锁定资源的访问权限。

std::unique_lock(除其他事项外)是可移动的(不可复制的)。因此,您可以转移对基础资源的访问权限。就像您转让std::unique_ptr的所有权一样。

虽然我真的不能评论为什么选择命名方案,因为我不在那里,也没有阅读关于这个主题的论文/讨论......两者之间的相似之处至少足够明显,足以让我说"是的,我明白他们为什么这样做:)。

你提到std::unique_ptr是有道理的。

std::unique_lockboost::unique_lock为蓝本。 这是将其放入标准的建议。

这篇论文似乎没有提到这个名字背后的原因,但我推测unique_前缀旨在表示一种类型:

  • 可以是"空的">
  • 默认构造"空">
  • 可以移动。
  • 可在销毁前释放
  • 明确
  • 禁止共享/复制(有明确允许共享std::shared_lock)

相关内容

  • 没有找到相关文章

最新更新