互斥锁使用格式安全
@synchronized(锁对象) { // 须要锁定的代码 } 注意:锁定1份代码只用1把锁,用多把锁是无效的
互斥锁的优缺点服务器
优势: 能有效防止因多线程抢夺资源形成的数据安全问题多线程
缺点:须要消耗大量的CPU资源atom
互斥锁的使用前提:多条线程抢夺同一块资源spa
相关专业术语:线程同步线程
线程同步的意思是:多条线程按顺序地执行任务code
互斥锁,就是使用了线程同步技术对象
OC在定义属性时有nonatomic和atomic两种选择内存
atomic:原子属性,为setter方法加锁(默认就是atomic)资源
nonatomic:非原子属性,不会为setter方法加锁
atomic加锁原理
@property (assign, atomic) int age; - (void)setAge:(int)age { @synchronized(self) { _age = age; } }
nonatomic和atomic对比
atomic:线程安全,须要消耗大量的资源
nonatomic:非线程安全,适合内存小的移动设备
iOS开发的建议
全部属性都声明为nonatomic
尽可能避免多线程抢夺同一块资源
尽可能将加锁、资源抢夺的业务逻辑交给服务器端处理,减少移动客户端的压力