多线程中资源的使用问题有时会出现极大的问题,尤其修改值的时候,这就引入了锁的机制。
了解iOS
的几种锁的基本形式;下面几个还未用过因此也只是简单提下,后续再完善!
1. @synchronized(id object)
(最简单的方法) 会自动对参数对象加锁。
作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改。
这个是
objective-c
的一个锁定令牌,防止self
对象在同一时间内被其它线程访问,起到线程保护作用。一般在公用变量的时候使用,如单例模式或操作类的static
变量中使用。
@synchronized(self) {
// 这段代码一次只能有一个线程执行
}
2. NSLock
NSLock
对象实现了NSLocaking
protocol
,包含几个方法:
lock
:加锁
unlock
:解锁
tryLock
:尝试加锁,如果失败了,并不会阻塞线