IOS 中锁是最常用的同步工具,一段代码在同一个时间只能允许被有限个线程访问,比如 A线程进入需要保护的代码之前需要先添加简单的互斥锁,另一个线程B就无法访问,只有等待前一个线程A执行完被保护的代码后解锁,B线程才能访问被保护的代码
下面将列举IOS中常用的锁
1:OSSSpinLock:
1:NSLock 可以理解为 互斥锁
NSLock *lock = [[NSLock alloc] init];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[lock lock];
sleep(3);
NSLog(@"NSLock 1");
[lock unlock];
NSLog(@"NSLock 1解锁成功");
});
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[lock lock];
NSLog(@"NSLock 2");
sleep(2);
[lock unlock];
NSLog(@"NSLock 2解锁成功");
});
2017-10-20 11:33:44.278809+0800 [12742:2542290] NSLock 1
2017-10-20 11:33:44.279151+0800 [12742:2542290] NSLock 1解锁成功
2017-10-20 11:33:44.279119+0800 [12742:2542289] NSLock 2
2017-10-20 11:33:46.284416+0800 [12742:2542289] NSLock 2解锁成功