iOS常见锁对象:
1.互斥锁NSLock
NSLock* lock = [[NSLock alloc] init];
[locklock];
//处理操作
[lockunlock];
2.对象锁@synchronized(self)
staticNSObject*obj =nil;
@synchronized(self)
{
if(obj ==nil) {
obj = [[NSObjectalloc]init];
}
returnobj;
3.条件锁NSConditionLock
//条件锁
NSConditionLock*lock = [[NSConditionLockalloc]initWithCondition:1];
//任务
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
//加锁
[locklockWhenCondition:1];
NSLog(@"-------任务1");
//解锁
[lockunlockWithCondition:2];
});
//任务
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
//加锁
[locklockWhenCondition:2];
NSLog(@"-------任务2");
//释放锁
[lockunlock];
});
4.递归锁NSRecursiveLock