objective-c – 在Obj-C 2.0中锁定合成原子@properties的细节
发布时间:2020-12-16 06:01:33 所属栏目:百科 来源:网络整理
导读:Obj-C 2.0中的属性文档说明,原子属性在内部使用一个锁,但是它不记录锁的细节.有没有人知道这是一个每个属性的锁,每个对象的锁与@synchronized(self)所使用的隐含的锁相分离,或者相当于@synchronized(self)? 解决方法 原子@properties使用的锁是一个实现细节
Obj-C 2.0中的属性文档说明,原子属性在内部使用一个锁,但是它不记录锁的细节.有没有人知道这是一个每个属性的锁,每个对象的锁与@synchronized(self)所使用的隐含的锁相分离,或者相当于@synchronized(self)?
解决方法
原子@properties使用的锁是一个实现细节 – 对于适当的平台上的适当类型,没有锁的原子操作是可能的,如果苹果没有利用它,我会感到惊讶.在任何情况下都无法访问该锁,因此您不能在同一个锁上同步.几位苹果工程师指出,原子性质不能保证线程安全;原子属性只保证该值的获取/集合是原子的.为了正确的线程安全性,您将不得不使用更高级别的锁定或同步,并且您几乎肯定不想使用与合成的getter / setter(s)可能使用的锁相同的锁.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |