4.多线程

ios当中有哪些锁?

  • @synchronized
    一般在创建单例对象的时候使用
  • atomic
    修饰属性的关键字
    对被修饰对象进行原子操作(不负责使用)
  • OSSpinLock(自旋锁)
    循环等待询问,不释放当前资源
    用于轻量级数据访问,简单的int值 +1/-1操作
  • NSLock
下面这种情况会造成 死锁(原因重入) 解决方法  采用递归锁
-(void)mathod1{
    [lock lock];
    [self method2];
    [lock unlock];
}
-(void)mathod2{
    [lock lock];
    //code
    [lock unlock];
}
  • NSRecursiveLock(递归锁)
正常运行 
-(void)mathod1{
    [recursivelock lock];
    [self method2];
    [recursivelock unlock];
}
-(void)mathod2{
    [recursivelock lock];
    //code
    [recursivelock unlock];
}
  • dispatch_semaphore_t
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 什么情况下会有线程隐患? 我们在使用多线程技术带来的便利的同时,也需要考虑下多线程所带来的隐患。比如,我们可...
    沉江小鱼阅读 888评论 0 11
  • 前言 iOS开发中由于各种第三方库的高度封装,对锁的使用很少,刚好之前面试中被问到的关于并发编程锁的问题,都是一知...
    喵渣渣阅读 3,861评论 0 33
  • 基本认识 在计算机的发展长河中,为了解决充分能让 CPU 得到利用,出现了多线程的概念,其目的就是为了提高 CPU...
    valentizx阅读 626评论 5 4
  • 多线程的安全隐患 在使用多线程的过程中,一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源,同一个变...
    雪山飞狐_91ae阅读 735评论 0 1
  • 一、前言 前段时间看了几个开源项目,发现他们保持线程同步的方式各不相同,有@synchronized、NSLock...
    稻春阅读 500评论 0 0

友情链接更多精彩内容