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()//执行接下来的函数

    });

你可能感兴趣的:(iOS 多线程顺序执行)