美文网首页
原子属性

原子属性

作者: edison0428 | 来源:发表于2018-07-31 15:14 被阅读69次

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

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

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

  • 自旋锁 和 互斥锁
    共同点:都能保证线程安全

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

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

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

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

一般开发建议

  • 所有的属性都声明为nonatomic
  • 应尽量避免多线程抢夺同一块资源
  • 尽量将加锁,资源抢夺的业务逻辑交给服务器端去处理

相关文章

网友评论

      本文标题:原子属性

      本文链接:https://www.haomeiwen.com/subject/izlqvftx.html