名称“weak_ptr::lock()”的原因是什么?

What is the reason for the name `weak_ptr::lock()`?

我们的许多开发人员不明白从 weak_ptr 创建 shared_ptr 与锁定事物有什么关系。在他们看来,术语 'lock' 首先与互斥体相关联。

它本可以被称为 usesafeguardleasepromote 例如...但是嘿,它不是,这是我们的责任学习标准。

但对他们来说,这是一个非常糟糕的问题,以至于另一个复制了这个习语的 class 不得不重命名,导致重命名后有许多代码行。现在我们为了一点直观性而牺牲了与标准的一致性。

有谁知道 lock() 这个名字是如何选择的?

将共享对象锁定在内存中,防止被删除。

它与锁定互斥锁或类似的东西无关。