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];
//任務(wù)
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
//加鎖
[locklockWhenCondition:1];
NSLog(@"-------任務(wù)1");
//解鎖
[lockunlockWithCondition:2];
});
//任務(wù)
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
//加鎖
[locklockWhenCondition:2];
NSLog(@"-------任務(wù)2");
//釋放鎖
[lockunlock];
});
4.遞歸鎖NSRecursiveLock