锁
ios当中有哪些锁?
- @synchronized
一般在创建单例对象的时候使用 - atomic
修饰属性的关键字
对被修饰对象进行原子操作(不负责使用) - OSSpinLock(自旋锁)
循环等待询问,不释放当前资源
用于轻量级数据访问,简单的int值 +1/-1操作 - NSLock
下面这种情况会造成 死锁(原因重入) 解决方法 采用递归锁
-(void)mathod1{
[lock lock];
[self method2];
[lock unlock];
}
-(void)mathod2{
[lock lock];
//code
[lock unlock];
}
- NSRecursiveLock(递归锁)
正常运行
-(void)mathod1{
[recursivelock lock];
[self method2];
[recursivelock unlock];
}
-(void)mathod2{
[recursivelock lock];
//code
[recursivelock unlock];
}
- dispatch_semaphore_t
网友评论