美文网首页
iOS开发中GCD普遍使用

iOS开发中GCD普遍使用

作者: NHLNIO | 来源:发表于2018-08-01 16:14 被阅读0次

1.全局队列和主队

dispatch_queue_get_main_queue();

dispatch_queue_get_global_queue(0,0);

2.串行队列和并行队列

串行队列

dispatch_queue_t  serial = dispatch_queue_create("queue.com",NULL);

并行队列

dispatch_queue_t concurren = dispatch_queue_create("queue.com",DISPATCH_QUEUE_CONCURRENT);

3.多个线程子任务完成后再执行某一个任务,GCD线程组

dispatch_queue_t concurrent = dispatch_queue_create("queue.com",DISPATCH_QUEUE_CONCURRENT);

dispatch_group_t groupGCD = dispatch_group_create();

dispatch_group_async(groupGCD,concurrent,^{

    //子线程1;

});

dispatch_group_async(groupGCD,concurrent,^{

    //子线程2;

});

第一种方式:

dispatch_group_notify(groupGCD,concurrent,^{

    //目前在子线程中

    dispatch_async(dispatch_get_global_queue(0,0),^{

        //回到主线程

        dispatch_async(dispatch_get_main_queue(),^{

            //

});

});

});

第二种方式

在每一个子线程中添加

dispatch_group_enter(groupGCD);

dispatch_group_leave(groupGCD);

/*

使用 dispatch_group_enter(grpupT);来解决,dispatch_group_enter 和 dispatch_group_leave 必须要成对出现;

    dispatch_group_enter : 使用一种手动的方式将另外一个 block 以不同于 dispatch_group_async 的方式添加到线程组中。在异步任务开始之前调用;

    dispatch_group_leave : 手动指示一个 block 块执行完毕。以一种不用于 dispatch_group_async 的方式离开线程组,在异步任务执行完成之后调用;

*/

dispatch_group_async(groupGCD,concurrent,^{

    dispatch_group_enter(groupGCD);

    dispatch_async(dispatch_get_global_queue(0,0),^{

            //子线程1

    dispatch_group_leave(groupGCD);

});

});

dispatch_group_async(groupGCD,concurrent,^{

    dispatch_group_enter(groupGCD);

    dispatch_async(dispatch_get_global_queue(0,0),^{

            //子线程2

    dispatch_group_leave(groupGCD);

});

});

dispatch_group_notify(groupGCD,concurrent,^{

        //回到主线程

        dispatch_async(dispatch_get_main_queue(),^{

});

});

4.一次执行 和 延后执行

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(20*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{NSLog(@"执行延迟操作");});    

dispatch_once_t once;

dispatch_once(&once,^{

});

相关文章

  • iOS开发中GCD普遍使用

    1.全局队列和主队 2.串行队列和并行队列 串行队列 并行队列 3.多个线程子任务完成后再执行某一个任务,GCD线...

  • NSOperation

    NSOperation是ios基于GCD的封装,实际上会使用GCD也就意味着会使用NSOperation,开发中个...

  • iOS 开发之 GCD 不同场景使用

    iOS 开发之 GCD 不同场景使用 本文在iOS 开发值 GCD 基础 的基础上,继续总结了 GCD 的一些AP...

  • iOS开发多线程之GCD

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 GCD...

  • iOS之多线程

    iOS开发中,现在大部分都使用方便的GCD来管理多线程开发,那什么是GCD,以及它是如何使用的呢?这篇文章主要介绍...

  • iOS开发之GCD并发队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 03 ...

  • 关于GCD的使用

    在iOS开发中,对于多线程,大多数开发者使用苹果提供的简单的GCD, 频繁的使用GCD,并发队列并不会去管理最大并...

  • iOS GCD的基本使用

    GCD在iOS中多线程开发中使用频繁,使用方便简单,可以满足我们大部分需求。其使用方法如下: 1、基本认识 GCD...

  • iOS开发之GCD同步任务加强

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 004...

  • iOS开发之GCD串行队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 实例d...

网友评论

      本文标题:iOS开发中GCD普遍使用

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