美文网首页
GCD总结二——其它函数的使用

GCD总结二——其它函数的使用

作者: 小圆菜陪你财务自由 | 来源:发表于2018-07-05 22:58 被阅读0次

    在上一篇介绍了GCD的主要使用方法,但是还有个别功能没有说到,其它有些还是挺常用的,下面就再补充下(啰嗦几句):

    1,延时执行:

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        // 2秒后执行这里的代码...,延时函数,是异步执行的,大家可以测试一下。比如用下面的代码也可以得到结果:

    NSLog(@"hello");

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

            NSLog(@"%@",[NSThread currentThread]);

        });

        NSLog(@"xiaoyuancai");

    });

    2,一次执行:

    dispatch_once(&onceToken, ^{

       //只执行1次的代码(这里面默认是线程安全的,不信大家可以测试一下,用异步+并发队列去测试)

    });

    3,快速迭代(不常用):

    dispatch_apply(10, dispatch_get_global_queue(0, 0), ^(size_t

    index){

       //执行10次代码,index顺序不确定

    });

    4,队列组:

    使用场景:

    首先:分别异步执行2个耗时的操作

    其次:等2个异步操作都执行完毕后,再回到主线程执行操作,如果想要快速高效地实现上述需求,可以考虑用队列组。

    dispatch_group_tgroup =  dispatch_group_create();

    dispatch_group_async(group,

    dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

       //执行1个耗时的异步操作

    });

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

       //执行1个耗时的异步操作

    });

    dispatch_group_notify(group,dispatch_get_main_queue(),^{

       //等前面的异步操作都执行完毕后,回到主线程...

    });

    相关文章

      网友评论

          本文标题:GCD总结二——其它函数的使用

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