似乎有一种小趋势,在某个时候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_lock
以boost::unique_lock
为蓝本。 这是将其放入标准的建议。
这篇论文似乎没有提到这个名字背后的原因,但我推测unique_
前缀旨在表示一种类型:
- 可以是"空的">
- 默认构造"空">
- 可以移动。
- 可在销毁前释放 明确
- 禁止共享/复制(有明确允许共享
std::shared_lock
)