原子属性

2018-07-31  本文已影响69人  edison0428

非原子属性nonatomic 和原子属性atomic

原子属性atomic:就是为了保证这个属性的安全性(线程安全),就是针对于多线程的设计的

默认的是atomic,为什么平时用非原子属性nonatomic而不是原子属性atomic:当我们用原子属性atomic属性的时候,我们对这个属性的的(写操作加锁,读操作不加锁)相当于上了把锁(这把锁叫 自旋锁),保证同一时间就只有一个线程能够执行,保证数据安全,性能会差点。除非这个属性可能会被多线程访问

不同点:
互斥锁:如果线程被锁在外面,那么这个线程就会进入休眠的状态,等待锁打开,线程就会被唤醒进入就绪状态

自旋锁:如果线程被锁在外面,线程就会用死循环的方法一直等待锁打开,并不是休眠

无论什么锁,都很消耗性能,效率不高

在单写多读的一种多线程技术,同样可能出现脏数据

一般开发建议

上一篇下一篇

猜你喜欢

热点阅读