iOS 异步线程(冰山一角,记录一下项目中优化使用到的方法)

队列组(亲测,可以的)
队列组可以将很多队列添加到一个组里,这样做的好处是,当这个组里所有的任务都执行完了,队列组会通过一个方法通知我们。下面是使用方法,这是一个很实用的功能。

//.创建队列组
dispatch_group_t group = dispatch_group_create();
//2.创建队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_async(group, queue, ^{
});
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
NSLog(@"全部完成 - %@", [NSThread currentThread]);
});

另一种:
//1.创建队列
dispatch_queue_t uploadQueue = dispatch_queue_create("refreshDbQueue", NULL);
dispatch_queue_t getMainQueue = dispatch_get_main_queue();
dispatch_async(uploadQueue, ^{
dispatch_async(getMainQueue, ^{
});
});

使用:(第一种)
(队列组可以将很多队列添加到一个组里,这样做的好处是,当这个组里所有的任务都执行完了,队列组会通过一个方法通知我们。下面是使用方法,这是一个很实用的功能)

  • (void)test{
    //1.创建队列组
    dispatch_group_t group = dispatch_group_create();
    //2.创建队列
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    //3.多次使用队列组的方法执行任务, 只有异步方法
    //3.1.执行3次循环
    dispatch_group_async(group, queue, ^{
    for (NSInteger i = 0; i < 3; i++) {
    NSLog(@"group-01 - %@", [NSThread currentThread]);
    }
    });

    //3.2.主队列执行8次循环
    dispatch_group_async(group, dispatch_get_main_queue(), ^{
    for (NSInteger i = 0; i < 8; i++) {
    NSLog(@"group-02 - %@", [NSThread currentThread]);
    }
    });
    //3.3.执行5次循环
    dispatch_group_async(group, queue, ^{
    for (NSInteger i = 0; i < 5; i++) {
    NSLog(@"group-03 - %@", [NSThread currentThread]);
    }
    });
    //4.都完成后会自动通知
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    NSLog(@"全部完成 - %@", [NSThread currentThread]);
    });
    }
    第二种的使用是很普遍的,随便一搜多了是,不再记录!

转自: http://www.jianshu.com/p/0b0d9b1f1f19 希望看到更多的,请阅读原文。

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

推荐阅读更多精彩内容

  • NSThread 第一种:通过NSThread的对象方法 NSThread *thread = [[NSThrea...
    攻城狮GG阅读 843评论 0 3
  • #import "ViewController.h" @interface ViewController () @...
    艾克12138阅读 221评论 0 0
  • 在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项。当然也会给出几种多线程的案...
    张战威ican阅读 613评论 0 0
  • #import "ViewController.h" @interface ViewController () @...
    艾克12138阅读 266评论 0 0
  • 1. GCD简介 什么是GCD呢?我们先来看看百度百科的解释简单了解下概念 引自百度百科:Grand Centra...
    千寻_544f阅读 401评论 0 0