iOS 多线程顺序执行

经常碰到这种情况,请求一些比较耗时的操作,需要用block,等block内部执行完,再开始根据block获取的数据,执行其他步骤,这时就需要用多线程的顺序执行。

dispatch_group_t grp = dispatch_group_create();    //创建多线程组

    dispatch_group_async(grp, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        dispatch_semaphore_t semp = dispatch_semaphore_create(0); //创建信号量

        myBlock = ^{          //自己的block函数

            dispatch_semaphore_signal(semp);  //执行完通知标识

        }

        dispatch_semaphore_wait(semp, DISPATCH_TIME_FOREVER);// 在请求成功之前等待信号量(-1)

    });

    dispatch_group_notify(grp, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

function()//执行接下来的函数

    });

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 很久前的总结,今天贴出来。适合看了就用,很少讲解,纯粹用法。 目录 Dispatch Queue dispatch...
    和女神经常玩阅读 3,945评论 0 3
  • Dispatch Queues dispatch queues是执行任务的强大工具,允许你同步或异步地执行任意代码...
    YangPu阅读 3,836评论 0 4
  • 一:base.h 二:block.h 1. dispatch_block_flags:DISPATCH_BLOCK...
    小暖风阅读 7,263评论 0 0
  • * 2017-12-28 上音乐课,孩子们请求我早下课,被我拒绝,因为课堂秩序并不好所以不能早下课。我也的确没有早...
    金金心阅读 793评论 0 0
  • 文|水湄 昨天在网上看到这样一篇文章,大意是提倡大家去看一些不那么热门的书或文章,到旅游地图上没有标记出来的景点去...
    kathy湄阅读 4,645评论 3 8