GCD

作者: 开心一刻_ | 来源:发表于2018-12-02 13:32 被阅读0次

GCD的底层实现

基本理解

最好的是开辟3-6条线程,根据cpu的内核执行
异步:
异步并发队列:并不一定每一个线程都会开启一条新线程,当达到一个最大数量的数量之后会增加限制
异步串行队列: 只开辟了一个线程
重点
同步: 不会开辟一条子线程,要看同步的线程是否在子线程里。
异步: 会开辟一条线程,也有可能复用当前已经空闲的线程。
当前线程是哪一条就会阻塞哪一条。
串行:只会创建一条新的线程,不包括现在的线程,还有一个特点:线程里面的任务是一个一个执行的(也就是里面的线程是一个一个执行的)
并发:会创建很多线程,会出现复用已经用完的子线程的情况。

分析所有的问题都根据线程来分析。

并发:同步的话,任务按顺序执行。
异步:真正的并发。

同步和异步:能不能开辟一个线程。
串行和并发:针对的是队列。
最终的执行顺序:取决于他们的组合。

NSThread和gcd区别

 NSThread: 需要自己管理线程的生命周期
GCD:自动管理

死锁:

两个人物相互等待
  1. 主线程是串行队列。(串行队列的特点,是要等一个任务走完另一个任务才可以执行)
  2. 在主线成里面用异步不会开辟子线程。
  3. 需要等到主线成中的任务执行完才会执行主队列重点任务。

两个线程走完然后执行另一个方法

1.  dispatch_group_enter  dispatch_group_leave, dispatch_group_notify, 
配合使用
2. (栅栏)barrier 。
3. 自己手动代码控制。

线程安全:读取到的结果是可预见的
线程不安全:读取到的结果是不可预见的。

线程锁

线程锁:保证数据的安全
常用锁:信号量、NSLock、@synthesnise
线程锁的原理:确保只有一条线程在执行数据的读取。
dispatch_semaphore_t: 限制线程的并发数

atomic和nonatomic

  1. 为什么不用atomic
    automic等的set和get方法可以使用automic
    因为它并不能保证线程安全,而且耗性能

只能保证简单的set和get线程安全,如果增加了一些运算的操作就不是线程安全的了。
比如number++这样的操作,最后的结果不确定所以就是线程不安全的。
而且uilable等控件都是在主线成上面的,不存在所谓的线程安不安全,所以都应该用noautomic。

锁的区别

@synchronized

性能较差不建议使用,会隐式添加异常处理机制,如果代码报异常会释放该锁。

NSLock

锁定某一个资源

semaphore

信号量=1的时候就是互斥锁了。
它还可以调度线程(控制线程的最大并发数)

相关文章

  • 多线程之GCD

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

  • 扩展GCD(求逆元,解同余方程等等)

    首先要知道gcd函数的基本性质:gcd(a,b)=gcd(b,a)=gcd(|a|,|b|)=gcd(b,a%b)...

  • iOS - GCD

    目录 GCD简介 GCD核心概念 GCD队列的使用 GCD的常见面试题 GCD简介 Grand Central D...

  • iOS-多线程:GCD

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

  • 浅析GCD

    GCD目录: 1. GCD简介 为什么要用GCD呢? GCD可用于多核的并行运算GCD会自动利用更多的CPU内核(...

  • 7.3 多线程-GCD

    多线程-GCD 多线程-GCD-串行并行 多线程-GCD.png GCD-线程的通讯、延时操作、定时器 GCD-线...

  • iOS 多线程--GCD

    一、GCD基本介绍 1.GCD简介 GCD是Grand Central Dispatch的缩写,GCD是苹果推出的...

  • 自用算法模板(JAVA版)

    一、数论 1)GCD GCD(求最大公约数) QGCD(快速GCD) extGCD(拓展GCD,解决ax + by...

  • GCD介绍

    一、GCD简单介绍 什么是GCD GCD优势 任务和队列 GCD有2个核心概念 GCD的使用就2个步骤 将任务添加...

  • 7.多线程基础(七)GCD加强

    1.GCD串行队列和并发队列 2.GCD延时执行 3.GCD线程组:(的作用) 4.GCD定时器: GCD的实现 ...

网友评论

      本文标题:GCD

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