在多线程情况下:多个线程要访问同一块资源时,容易引发数据混乱出错 和线程安全等等问题。因此需要给线程加上互斥锁。
方式一:@synchronized互斥锁
//toke必须是全局唯一的 一般用self
//加锁后 会消耗一定的性能
//加锁后的结果:线程同步,多条线程按顺序地执行任务
@synchronized (<#token#>) {
<#statements#>
}
注意:锁定一份代码只用一把锁,多把锁是无效的
方式二:NSLock
lock,加锁
unlock,解锁
tryLock,尝试加锁,如果失败了,并不会阻塞线程,只是立即返回NO
NSLock: 使用注意,不能多次调用 lock方法,会造成死锁