美文网首页
GCD简介及其基本用法

GCD简介及其基本用法

作者: 小酒窝_David | 来源:发表于2018-01-01 16:45 被阅读18次

GCD简介

image

这是Apple给出的官方解释,大体意思就是:Grand Central Dispatch(GCD) 是Apple开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。
提到队列,我们就会想到2中队列,串行队列(Serial Diapatch Queue)和并行队列(Concurrent Diapatch Queue)

  1. 串行队列(Serial Diapatch Queue)
    使用场景:当任务相互依赖,具有明显的先后顺序的时候,使用串行队列是一个不错的选择。
    创建方法:


    image

    参数说明:第一个参数为队列名称,第二个为参数类型
    调用,再第二次调用中我们休眠2秒,再第三次调用中我们休眠1秒


    image
    为了能更好的理解,在调用的过程中添加了log,看一下日志平台的log
    image
    我们能看到,sitech=3的输出是再sitech=2的输出之后,也就是说,sitech=3是在等待sitech=2执行完成之后再执行的。
  2. Concurrent Diapatch Queue 并发队列
    与串行队列刚好相反,他不会存在任务间的相互依赖。
    创建方法:比较2个队列的创建,我们发现只有第二个参数从DISPATCH_QUEUE_SERIAL变成了对应的DISPATCH_QUEUE_CONCURRENT,其他完全一样。


    image

    用同一段代码,换一种队列我们来比较一下效果:


    image
    输出的log:
    image

我们发现,log的输出在3个不同编号的线程中进行,而且相互不依赖,不阻塞。
其实系统为我们提供了2个队列:Global Queue & Main Queue
Global Queue其实就是系统创建的Concurrent Diapatch Queue
Main Queue 其实就是系统创建的位于主线程的Serial Diapatch Queue
通常我们会把2个队列放到一起使用,也是我们最常用的开异步线程-执行异步任务-回主线程的一种方式。


image

下面我们来说一下对队列的操作方法
1、dispatch_after
延迟执行的方法,因为再主线程中不能休眠来延迟执行调用


image
日志
image
从日志中我们能看到,再延迟了3秒之后才输出的执行了方法日志。
2、dispatch_group
当我们需要监听一个并发队列中,等到所有任务都执行完成了之后,再继续往下执行,就得用到这个group,因为并发队列你并不知道哪一个是最后执行的,所以以单独一个任务是无法监听到这个点的,如果把这些单任务都放到同一个group,那么,我们就能通过dispatch_group_notify方法知道什么时候这些任务全部执行完成了。
image

日志输出:


image
我们能看到等着任务都完成之后,才输出的group finish
3、dispatch_once
这个函数一般是用来做一个真的单例,也是很常用的。
image

相关文章

  • GCD简介及其基本用法

    GCD简介 这是Apple给出的官方解释,大体意思就是:Grand Central Dispatch(GCD) 是...

  • GCD用法简介

    GCD用法 GCD Dispatch Queue介绍 苹果官方对GCD的说明:开发者要做的只是定义想执行的任务并追...

  • Docker Machine 详解

    笔者在《Docker Machine 简介》一文中简单介绍了 Docker Machine 及其基本用法,但是忽略...

  • 多线程之GCD

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

  • iOS 多线程--GCD

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

  • iOS多线程

    iOS多线程实现方案 GCD(Grand Central Dispatch) 一、基本用法GCD会自动利用更多的C...

  • iOS-多线程:GCD

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

  • iOS GCD基本用法

    iOS编程中运用最多的多线程就是GCD和NSOperation,NSOperation是苹果对GCD的OC封装,更...

  • GCD基本用法大全

    GCD是Apple开发的一个多核编程的解决方案,他可以用于多核的并行运算,并自动利用更多的CPU内核,同时GCD会...

  • iOS GCD基本用法

    GCD全称为Grand Central Dispatch,是libdispatch的市场名称,而libdispat...

网友评论

      本文标题:GCD简介及其基本用法

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