美文网首页
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常用的几个方法

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