为什么仍然使用非原子,即使它可能导致数据错误?

时间:2016-07-19 13:48:37

标签: ios iphone properties automatic-ref-counting

我已经阅读了关于原子与非原子之间差异的几种解释。 就像在this link中一样,它说:

  

使用“atomic”,合成的setter / getter将确保始终从getter返回整个值或由setter设置,而不管任何其他线程上的setter活动。也就是说,如果线程A位于getter的中间,而线程B调用setter,则实际可行的值 - 很可能是自动释放的对象 - 将返回给A中的调用者。

     

在非原子能方面,没有这样的保证。因此,非原子比“原子”快得多。

非原子限定符可能会在同时使用setter和getter时导致访问错误。那么使用它有什么意义,虽然它比原子更快?

1 个答案:

答案 0 :(得分:0)

性能。如果将属性声明为原子属性,则访问者将使用锁定来确保完全检索和设置值。如果你不需要这个 - 你确定只有一个线程可以访问这个变量,你就会在不获得好处的情况下对这些锁产生性能损失。 因此,您可以自行决定是否需要锁定对象。