美文网首页
iOS GCD总结

iOS GCD总结

作者: 九歌之山鬼 | 来源:发表于2018-04-19 14:18 被阅读0次

    1.为什么要使用GCD?

    ·GCD可用于多核的并行运算

    ·GCD会自动利用更多的CPU内核(双核  四核)

    ·GCD会自动管理线程的生命周期,不需要编写任何线程管理代码

    2.GCD任务和队列

    任务:

    执行操作的意思,在线程中执行的代码

    同步执行(sync)

    ·同步添加任务到指定的队列中,在添加的任务执行结束之前会一直等待,直到队列里面的任务完成之后再继续执行

    ·不开启新的线程

    异步执行(async)

    ·异步添加任务到指定的队列中,不会做任何等待,可以继续执行任务

    ·可以在新的线程中执行任务,具备开启新线程的能力

    队列(Dispatch Queue)

    指执行任务的等待队列,即用来存放任务的队列。队列是一种特殊的线性表,采用FIFO先进先出的原则。

    串行队列(Serial Dispatch Queue)

    ·依次逐一先后有序的执行(只开启一个线程,一个任务执行完毕后,再执行下一个任务)

    并发队列(Concurrent Dispatch Queue)

    ·可以让多个任务并发(同时)执行(可以开启多个线程,并且同时执行任务)

    主队列(Main Dispatch Queue)

    ·GCD提供的一种特殊的串行队列,所有放在主队列中的任务,都会放到主线程中执行。

    3.使用GCD

    ·创建一个队列(串行队列或并发队列)

    ·将任务追加到任务的等待队列中,然后系统就会根据任务类型选择同步或者异步来执行任务

    3.1队列的创建/获取方法

     dispatch_queue_create(<const char * _Nullable label>, <dispatch_queue_attr_t  _Nullable attr>)

    ·只用dispatch_queue_create来创建队列,需要传入两个参数。第一个参数表示队列的唯一标识符,用于DEBUG。第二个参数用来识别是串行队列还是并发队列。DISPATCH_QUEUE_SERIAL表示串行队列,DISPATCH_QUEUE_CONCURRENT表示并发队列。

    3.2任务的创建方法

    dispatch_sync(同步执行)

    dispatch_async(异步执行)

    相关文章

      网友评论

          本文标题:iOS GCD总结

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