use*_*504 8 clone reference-counting rust
我试图了解以下之间的优缺点:
与
除了测量和比较性能结果(我认为两者中的任何一个在性能方面都不会差很多)之外,我还试图了解在锈类动物的头脑中什么被认为是“通常更好”或“更惯用”。
如果我理解正确的话:
与
在这种情况下(“某些东西”的创建成本很低),与仅克隆它相比,将其包装在 Arc 中是否有任何好处?这两个选项中哪一个更可取?
在这种情况下(“某些东西”的创建成本很低),与仅克隆它相比,将其包装在 Arc 中是否有任何好处?这两个选项中哪一个更可取?
如果你真的只有一个Arc<Something>并且你克隆了它,那么可能不会。如果您想在线程之间共享某些内容并且所有权不清楚,则 Arc 是必要的,通常您需要在引用计数内使用某种锁以允许修改共享项目。
尽管在某些情况下它可以在没有锁的情况下有用,例如内部对象不能(因为它确实是唯一的)或不应该(因为它很昂贵)被复制并且需要(不可变地)被多个线程使用(所以你使用 Arc作为共享单个实例的一种方式),或者有时会复制(并且昂贵),但通常不会,在这种情况下,您可以在make_mut需要“拆分”Arc 时而不是创建急切的副本,但可以推迟额外的分配观点。
| 归档时间: |
|
| 查看次数: |
4876 次 |
| 最近记录: |