美文网首页
Swift4中使用GCD----明确概念

Swift4中使用GCD----明确概念

作者: 青山不改 | 来源:发表于2018-04-03 21:00 被阅读0次

首先明确几个概念:
在GCD里,我们并不关心线程,只关心队列,虽然最终任务都在线程上完成,但是那都被GCD接管了,线程的创建和销毁都由GCD负责,我们只用管理好队列和任务

  • 同步:完成需要做的任务后才会返回,进行下一任务。不具备开启新线程的能力,在哪个线程里添加同步任务到队列里,就会在哪个线程里完成,不管是添加到串行还是并行队列里:
    小明(当前线程)在看书(当前任务),渴了需要烧水(新的任务),现在有两种做法:
    1.自己去烧水,水烧开了喝完再回来看书(当前线程同步任务);
    2.派小红去烧水(新的线程),水烧开了回来(同步任务)通知小明喝水(回到当前线程)。

  • 异步:不会等待任务完成才返回,会立即返回。
    小明在看书(当前线程),渴了需要烧水(新的任务),派小红(新的线程)去烧水(任务),小红(新的线程)布置热水器,返回(不等水开直接返回,异步)陪小明看书,水开了小红会知道,然后通知小明喝水(烧水的任务结果回到当前线程)

  • 串行队列:队列里的任务依次执行。
    小明(串行队列)有两个任务,看书(任务1)和嘿嘿嘿(任务2),小红是有要求的人(产品经理),必须看完一本书才能嘿嘿嘿,两个任务有顺序,必须依次进行

  • 并行队列:任务并发执行。
    小明(并行队列)很牛逼,可以一心二用,可以同时看书和嘿嘿嘿,嘿嘿一下看一眼书,没啥顺序,也不知道是先嘿嘿完还是先看完书

  • 全局队列:系统维护的并行队列,务就行了

  • 主队列:系统维护的串行队列,所有的UI绘制任务都在这个队列里

PS:同步和异步说的是函数是不是立即返回,串行和并行说的是任务是不是按顺序执行

相关文章

网友评论

      本文标题:Swift4中使用GCD----明确概念

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