我正在设计一个游戏的对象结构,对于这种情况,最自然的组织形式是一棵树。作为智能指针的忠实粉丝,我专门使用 shared_ptr
。但是,在这种情况下,树中的子节点需要访问其父节点(例如,地图上的生物需要能够访问地图数据,也就是它们父节点的数据)。
当然,拥有关系是地图拥有它的生物,因此持有它们的 shared pointers。然而,为了从生物内部访问地图数据,我们需要指向父级的指针 -- 智能指针的方法是使用引用,即 weak_ptr
。
但是,我曾经读到过锁定 weak_ptr
是昂贵的操作 -- 也许现在不是了 -- 但考虑到 weak_ptr
将经常被锁定,我担心这种设计会导致性能差。
因此,问题来了:
锁定 weak_ptr 的性能惩罚是什么?它有多重要?