gpt4 book ai didi

c++ - weak_ptr 的性能损失是多少?

转载 作者:IT老高 更新时间:2023-10-28 12:51:37 28 4
gpt4 key购买 nike

我目前正在为游戏设计一个对象结构,在我的例子中,最自然的组织变成了一棵树。作为智能指针的忠实粉丝,我只使用 shared_ptr 的。然而,在这种情况下,树中的子节点需要访问它的父节点(例如—— map 上的生物需要能够访问 map 数据——因此他们的父节点的数据。

拥有的方向当然是 map 拥有它的存在,因此持有指向它们的共享指针。然而,为了从一个存在中访问 map 数据,我们需要一个指向父级的指针——智能指针的方式是使用一个引用,即 weak_ptr

但是,我曾经读到锁定 weak_ptr 是一项昂贵的操作——也许这不再是真的了——但考虑到 weak_ptr 会经常被锁定,我担心这种设计注定性能不佳。

因此问题:

锁定一个weak_ptr 的性能损失是什么?它有多重要?

最佳答案

来自 Boost 1.42 源代码(<boost/shared_ptr/weak_ptr.hpp> 第 155 行):

shared_ptr<T> lock() const // never throws
{
return shared_ptr<element_type>( *this, boost::detail::sp_nothrow_tag() );
}

所以,James McNellis 的评论是正确的;这是复制构建 shared_ptr 的成本.

关于c++ - weak_ptr 的性能损失是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2748091/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com