【问题标题】:What's the difference between atomic reference counting and automatic reference counting?原子引用计数和自动引用计数有什么区别?
【发布时间】:2017-02-17 23:53:40
【问题描述】:

我认为 ARC 是不时使用的首字母缩写词,但例如在 Rust 中它是“原子引用计数”,而在 Swift 或 ObjC 中他们称之为“自动引用计数”。究竟有什么区别?据我所知,它们的行为方式似乎相同。

【问题讨论】:

    标签: swift rust automatic-ref-counting


    【解决方案1】:

    这其实……完全不同。


    在 Rust 方面,我们有 ArcRc,它们是引用计数指针:

    • Rc 是简单的引用计数指针:克隆它只会增加一个计数器,当最后一个指向特定数据的Rc 被丢弃时,计数器会下降到 0 并且该数据被丢弃也是。
    • Arc 是它的原子版本,这意味着它是线程安全的,可以跨线程共享(与 Rc 不同)。

    在 Swift 方面,ARC 指的是自动引用计数,即 Swift 的垃圾收集机制,顾名思义是自动的(并且在代码中不可见)。

    【讨论】:

    • 还有一个问题:Swift 的引用计数是原子的吗? (我想它必须是......?)
    • 鉴于它们完全不同,我很高兴我问了!谢谢你:)
    • @LukasKalbertodt:我希望如此!但我们需要 Swift 专家来回答这个问题。
    • 这是线程安全的,如果是这个问题:stackoverflow.com/questions/13942226
    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 2015-09-24
    • 1970-01-01
    • 2013-03-26
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多