我知道有很多讨论,其中一个是https://stackoverflow.com/a/12969166/1724763,但答案不是很明确。
我只想关注其他地方没有找到的原子的特定用例(在ARC的背景下)
例如,我有:
@property (nonatomic, strong) someobject;
在这种情况下,someobject在init
中写入一次,之后由多个线程读取。
我必须制作atomic
吗?吸气剂究竟做了什么?只是返回指针?
对于标量和非客观c对象,我可以将它们nonatomic
用于多线程读写吗?我知道在Intel处理器上读取和写入对齐的int总是原子的。
另外,在访问原子属性时,我应该先分配一个局部变量并使用局部变量来提高性能吗?
答案 0 :(得分:2)
nonatomic
是安全的(其中此案例是整个应用程序会话中静态的对象。)
甚至无需进行retain
/ autorelease
舞蹈。
对于所有意图和目的,这与典型的sharedInstance
方法的行为相同。具体来说,readonly
值是以线程安全,排他性的方式计算的,一旦计算,值永远不会改变。
就性能而言?在确定可量化且可重复的真实世界性能问题之前,没有理由分配局部变量。