原子属性与非原子属性,互斥锁与自旋锁介绍

nonatomic 非原子属性 非线程安全,适合内存小的移动设备(手机,平板...)

atomic 原子属性(线程安全,但需要消耗大量资源)针对多线程设计的,为默认值,保证同一时间只有一个线程能够写入;本身就是一把自旋锁;单写多读,单个线程写入,多个线程读取

注意:当重写属性的get与set方法时需要在@implementation后添加:@synthesiae 属性名 = _属性名;

 

互斥锁与自旋锁对比

 

互斥锁:如果发现其他线程正在执行锁定代码,线程会进入休眠(就绪状态),等其他线程时间到打开锁后线程会被唤醒(执行)

 

自旋锁:如果发现其他线程正在锁定代码,线程会用死循环方式一直等待锁定的代码执行完毕,自旋锁更适合执行不好使代码;

注意:几乎所有UIKit提供的类都是线程不安全的,所有UI更新操作都在主线程上执行

 

posted @ 2016-07-18 11:09  mm0322  阅读(204)  评论(0编辑  收藏  举报