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中常见锁的性能对比图(摘自:ibireme): iOS锁的...
    LiLS阅读 5,415评论 0 6
  • 多线程需要一种互斥的机制来访问共享资源。 一、 互斥锁 互斥锁的意思是某一时刻只允许一个线程访问某一资源。为了保证...
    doudo阅读 4,093评论 0 5
  • 前言 一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源,比如多个线程访问同一个对象、同一个变量、同...
    WQ_UESTC阅读 4,357评论 0 5
  • demo下载 建议一边看文章,一边看代码。 声明:关于性能的分析是基于我的测试代码来的,我也看到和网上很多测试结果...
    炸街程序猿阅读 4,181评论 0 2
  • “造成某些人贪得无厌的原因,”我继续问“又是什么?为什么那么多人不能满足他们已经拥有的财富呢?” “这是贪爱的习气...
    柔光宝宝阅读 663评论 0 1