GCD

作者: 溜溜的小枫 | 来源:发表于2018-04-10 21:38 被阅读0次

三个概念:队列,线程,block块

关系:一个队列对应一个或者多个线程,一个线程对应一个或者多个block块

1 线程:一个CPU执行一组CPU命令列的路径就是线程。

    每一个dispatch_async或者dispatch_sync都是创建了一个线程并将队列添加到这个线程中(是否开辟新线程根据不同情况有不同注解《注解1》)

2 队列:这是gcd对线程的封装,是一个执行队列。(先进先出顺序)

    队列分为serial和concurrent两种队列,serial是同步队列,concurrent是异步队列。(无论是那种队列,都是先进先出,只是有是否等待的区别)

3 block块:他是具体的执行任务模块

注解1:

线程的分配是有系统根据不同创建函数以及不同的队列分配的,我们能干预,但是不能决定。

对于dispatch_sync函数,他是将子线程同步的加到当前线程中。如果是将serial队列添加到线程中,同一个serial队列的block在同一个线程,不同的serial队列的block也是在同一个线程中执行;如果是将concurrent队列添加到线程中,同一个concurrent队列的不同block在不同的线程中,不同的concurrent队列的相同或者不同block在不同的线程中。

对于dispatch_async函数,他是将子线程异步的加到当前线程中。如果是将serial队列添加到线程中,同一个serial队列的block在同一个线程,不同的serial队列的block不在同一个线程中执行;如果是将concurrent队列添加到线程中,同一个concurrent队列的不同block在不同的线程中,不同的concurrent队列的相同或者不同block在不同的线程中。

注解2:

dispatch_sync或者dispatch_async是一个函数,一个创建线程并将队列添加到线程中的函数。他的行为由注释1解释。他决定了当前线程和队列所在线程(根据注释1决定是否有新线程)的关系。(无论何种状况,第一次调用这些函数的时候是创建了新线程的)

队列决定了block与block之间的关系。

注释3:

dispatch_sync和dispatch_async的

实例理解:

下面的操作都是第一次执行

1    线程1中执行 dispatch_async() 是开辟一个线程2 并将queue加到这个线程2中,同时将线程2异步的加载到线程1中。

2    线程1中执行 dispatch_sync() 是开辟一个线程2 并将queue加到这个线程2中,同时将线程2同步的加载到线程1中。

3    线程1中执行 dispatch_sync() 开辟一个线程2。

      线程1中执行 dispatch_sync() 开辟一个线程3。(规定此次在必定开创新线程的情况下)

      dispatch_sync说明了线程2和线程1的关系。

      queue说明了线程2和线程3的关系

相关文章

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