IOS 多线程锁

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解锁成功


你可能感兴趣的:(IOS 多线程锁)