美文网首页
GCD任务队列和线程

GCD任务队列和线程

作者: LX2014 | 来源:发表于2018-08-08 08:05 被阅读12次

在对象的setter和getter方法进行同步时,用gcd的串行队列进行同步是一个很好的方式。
同步的方式有多种:
方式1:同步块

@synchronized(self){
        
    }

这种方式同步的问题是,锁住的是self这个对象,而不是对应的属性,如果有100个属性,那么在访问一个属性时,其他属性都是无法获取的。并且容易出现死锁现象.
死锁通常会在三种情况下发生1,同一个线程在没有释放锁的情况下又一次持有了锁。2,两个线程,在抢夺资源时彼此持有了对方需要的资源。如一个线程要同时持有两个锁才能执行某项任务,两个线程一个持有一把锁,这样都在等待对方释放就会出现死锁现象。3,哲学家吃饭问题中振荡死锁,多个线程同时获取和同时释放多个对应的锁,导致每个线程都无法获取足够多的锁。
方式2,NSLock对象(或递归锁NSRecursiveLock,线程可多次持有锁对象不会出现死锁)

相关文章

  • 06进阶之路-多线程管理

    1. GCD相关 学习链接 GCD 简介 (多核编程管理线程) GCD 任务和队列(同步和异步任务 并发和串行队列...

  • 多线程

    iOS中的几种多线程GCD1、GCD分为任务和队列,任务(同步,异步)队列(串行,并发),同步串行,同步主队列的情...

  • iOS之GCD学习心得

    1.GCD简介 gcd有两大概念:任务和队列(1) 任务:同步任务和异步任务。同步任务:不会开辟线程,在当前线程执...

  • gcd多线程任务与队列组合分析

    关于gcd中串行队列并行队列,以及同步任务和异步任务的花式嵌套,分析执行结果 多线程调试常用代码: gcd的任务 ...

  • iOS 多线程之任务和队列

    前言 学习多线程,肯定要了解GCD,GCD两个最核心的概念就是:任务和队列。所以学习好多线程,首先要把任务和队列吃...

  • 多线程之GCD

    GCD介绍 1、GCD简介 2、GCD任务和队列 3、GCD 的基本使用 4、GCD 线程间的通信 5、GCD 的...

  • 多线程02

    多线程2 GCD队列组: 基本使用: 常用函数 队列和组队列的区别 队列:封装任务,添加任务到队列 组队列:封装任...

  • GCD与NSOperation的区别

    GCD和NSOperation 用于实现多线程:GCD会自动将队列中的任务取出,放到对应的线程中执行,任务的取出遵...

  • iOS 中线程与队列的关系

    主线程主队列? 结论:GCD的主线程任务总会再最后执行。除GCD外的任务顺序执行。原因呢? 主线程是只有一个主队列...

  • iOS-多线程:GCD

    GCD 简介 GCD 任务和队列 GCD 的使用步骤 GCD 的基本使用(6种不同组合区别) GCD 线程间的通信...

网友评论

      本文标题:GCD任务队列和线程

      本文链接:https://www.haomeiwen.com/subject/dypfmftx.html