GCD

作者: seven_less | 来源:发表于2024-05-06 11:03 被阅读0次

sync: 会阻塞当前线程,不具备开启新线程的能力

async:不会阻塞当前线程,具备开启新线程的能力(注: 具备开启线程的能力,不一定会开启新线程,如异步执行主队列的任务就不会开启新的线程)

串行队列和并行队列,都遵循fifo(先进先出)原则,两者区别:执行顺序不同,使用的线程个数不同

同步+串行:

所有的任务都是在当前线程中执行的,未开启新线程。(同步执行不具备开启新线程的能力)

任务完全按照自上至下按顺序执行(同步执行需等待当前任务执行完毕才能继续向下执行)

同步+并发:

所有任务都是在当前线程执行,未开启新线程(同步执行不具备开启新线程的能力)。

任务自上至下顺序执行。(同步执行需等待当前任务执行完毕才能继续向下执行)。

异步+串行:

开启了新线程(异步执行具有开启线程的能力)但是不管任务有多少个,只开启一条新线程(串行队列的任务都在同一条线程执行)。

所有的任务都是在begin和end之后执行的(异步执行不需等待任务完毕,就可继续向下执行)。

任务是按队列中的顺序执行的(串行队列每次只有一个任务被执行,任务一个接一个执行)。

异步+并发:

异步执行具备开启新线程的能力,并发队列可利用多个线程,同时执行多个任务

任务是在begin和end之后开始执行的(异步执行不需等待任务完毕,就可继续向下执行)。

同步+主队列:

在主线程,执行“同步+主队列”任务时,会导致死锁的发生

“同步+主队列”任务放到其他线程(非主线程),那么并不会发生死锁

所有的任务都将在主线程(而非当前线程)执行,且任务按序执行

异步+主队列:

所有的任务都是在主线程中执行的(虽然异步执行具备开启线程的能力,但因为是主队列,所以所有的任务都在主线程中)

任务均在begin和end之后执行(异步执行不需等待任务完毕,就可继续向下执行)

任务是按顺序执行(主队列是串行队列,每次只执行一个任务,任务一个接一个执行)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • 多线程之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/zyylfjtx.html