美文网首页
GCD常用的几个方法

GCD常用的几个方法

作者: 小赢一场 | 来源:发表于2016-08-14 10:15 被阅读61次

一.dispatch_barrier_async 栅栏块

在一个自定义的并行队列中执行多个任务block时,如果接下来要处理的是barrier block, barrier block并不会立即执行,而是要一直等待barrier block 前面的所有其他并发block执行完毕才会执行barrier block,任何提交到barrier block之后的在此队列中执行的block只有等到barrier block执行完毕,才会接着向下执行

注意:这个队列要是用户通过dispatch_queue_create创建的自定义队列,而且还要是并行队列,
对于串行队列和全局队列不起作用,会按照普通的block执行

1.在全局队列中异步执行,会按照dispatch_async方式执行

2.自定义并行队列中执行

二.dispatch_group_async 分派组

将并行队列中异步的多个任务合并为一组,等到这组任务完成后,通过利用dispatch_group_notify回调得到这组任务完成的通知
例如:当异步下载多张图片的时候,需要等到所有图片下载完成之后,去通知用户下载完成,就可以这么来干

可以利用 dispatch_group_enter(dispathch_group_t group) dispatch_group_leave(dispathch_group_t group),来加入到指定的group中,这两个方法必须是成对出现的,否则会出现内存泄露 

有两个方法可以用来得到回到的通知 
dispatch_group_wait(group, DISPATCH_TIME_FOREVER)
这个方法会阻塞线层,只有当前group上所有的任务完成才会继续往下执行
dispatch_group_notify 
这个方法不会阻塞线层,这行代码之下所加到这个group的任务也包含在内

相关文章

  • GCD常用的几个方法

    当app首页有多个接口的时候,一个个的去写是不是有点太菜了。这时我们就可以使用强大的GCD,用异步+并发,好处是如...

  • GCD常用的几个方法

    一.dispatch_barrier_async 栅栏块 在一个自定义的并行队列中执行多个任务block时,如果接...

  • iOS多线程-GCD的几个常用方法

    1.GCD信号量:dispatch_semaphore (1)dispatch_semaphore_create创...

  • GCD常用方法

  • GCD常用方法

    本文主要介绍GCD一些API的使用,也就是注重实站! 一、GCD常用API1.并发队列2.串行队列3.设置自定义队...

  • GCD常用方法

    1、延迟做某些任务 2、多个任务同时进行,等任务全部完成之后去进行下一步操作。例如:下面的为网络刷新数据, 但是刷...

  • GCD 常用方法

    1. dispatch_async 异步添加到队列 Demo: 2. dispatch_after 延后添加到队列...

  • GCD常用方法

    //1、创建主线程(串行) dispatch_async(dispatch_get_main_queue(), ^...

  • GCD常用方法

    1.创建异步线程 2.创建同步线程 3.创建主线程 4.GCD只执行一次 5.线程延迟调用 6.信号量 dispa...

  • GCD常用方法

    执行一次代码 延迟执行 主线程睡眠3秒,该方法不推荐,因为会阻塞主线程,影响用户体验 该方法在哪个线程中调用则延迟...

网友评论

      本文标题:GCD常用的几个方法

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