`

GCD之Dispatch Group

    博客分类:
  • ios7
 
阅读更多

 

首先,我们来看下面的一段代码 ARC模式下

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_async(group, queue, ^{
        NSLog(@"block one");
    });
    dispatch_group_async(group, queue, ^{
        NSLog(@"block two");
    });
    dispatch_group_async(group, queue, ^{
        NSLog(@"block three");
    });
    dispatch_group_async(group, queue, ^{
        NSLog(@"block four");
    });
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        NSLog(@"main do");
    });

 执行结果是

013-12-31 23:31:56.677 GCDDemo[449:320b] block two
2013-12-31 23:31:56.677 GCDDemo[449:1303] block one
2013-12-31 23:31:56.677 GCDDemo[449:3603] block four
2013-12-31 23:31:56.677 GCDDemo[449:3503] block three
2013-12-31 23:31:56.683 GCDDemo[449:70b] main do

 解释

首先我们获得了系统的一个queue,这个queue是不等待处理中结束的queue,所以我们看到的执行结果是杂乱无章的。

接着我们create一个group,然后我们向队列中追加block,并加入group。当组内的任务都执行结束的时候,发出通知。

分享到:
评论

相关推荐

    iOS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)1

    dispatch_queue_t queue = dispatch_queue_create("com.gcd-dispatch_group_async(gro

    dispatch_group包含wait

    以上两种方式都是模拟任务block内为异步操作的情况,方式一先执行的dispatch_group_notify里的代码,后执行的dispatch_group_async里的任务代码,这与我们的初衷相违背。如果任务block内为同步操作时,则无论哪种...

    dispatch_group

    两种方式都是模拟任务block内为异步操作的情况,方式一先执行的dispatch_group_notify里的代码,后执行的dispatch_group_async里的任务代码,这与我们的初衷相违背。如果任务block内为同步操作时,则无论哪种方式都...

    DispatchGroup合并图片

    用DispatchGroup以及DispatchNotify等加载多张图片然后合并

    dispatch_group包含wait包含forever时长

    两种方式都是模拟任务block内为异步操作的情况,方式一先执行的dispatch_group_notify里的代码,后执行的dispatch_group_async里的任务代码,这与我们的初衷相违背。如果任务block内为同步操作时,则无论哪种方式都...

    多线程GCD的使用

    iOS多线程编程之Grand Central Dispatch(GCD)使用,具有1、常用的方法dispatch_async 2、dispatch_group_async 3、dispatch_barrier_async 4、dispatch_apply的用法

    Mac.OS.X和iOS中的并行开发

    Now that multicore processors are coming...Create a group of tasks that GCD can run all at once Instruct GCD to execute tasks only once or after a delay Discover how to construct your own dispatch queues

    iOS应用程序中通过dispatch队列控制线程执行的方法

    Grand Central Dispatch简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统,iOS应用程序中通过dispatch队列控制线程执行则是以并发来达到多核优化的重要途径.

    iOS中多网络请求的线程安全详解

    DispatchGroup:通过 GCD 机制将多个请求放到一个组内,然后通过 DispatchGroup.wait() 和 DispatchGroup.notify() 进行成功后的处理。 OperationQueue:为每一个请求实例化一个 Operation 对象,然后将这些对象...

    THGDispatch模块KillerRabbit.zip

    }执行一些异步任务:DispatchGroup().async(.Background) {  doSomething(1) }.async(.Utility) {  doSomething(2) }.async(.High) {  doSomethingUrgently(3) }.wait()或者:let group = DispatchGroup() ...

    精品资源-GCDFetchFeed-master项目.zip

    dispatch_group 监听多 feeds 的 fetch Html convert to Core Text feed 详情页 FMDB 本地存储 feed Atom 解析 阅读原文 feed 列表的样式调整 首页 fetch 中的效果 支持点击文章点击后记录已看,显示已看的效果 显示...

    iOS关于多张图片上传、地址返回顺序问题及解决方案

    先看描述 需求是怎样的:for 循环里面、多个网络请求上传图片,每次上传一张,至于为什么每次只上传一张呢,因为上传一张将要返回图片存储服务器的地址...dispatch_group_t group = dispatch_group_create(); for(..){

    leetcode答案-iOS-:在网上找的一些iOS面试资料

    iOS面试题-----多线程相关之GCD、死锁、dispatch_barrier_async、dispatch_group_async、Dispatch Semaphore 9、2019 iOS面试题-----多线程相关之NSOperation、NSOperationQueue、NSThread+runloop实现常驻线程、...

    IOS5 Programming Cookbook

    5.11 Constructing Your Own Dispatch Queues with GCD 394 5.12 Running Tasks Synchronously with Operations 397 5.13 Running Tasks Asynchronously with Operations 404 5.14 Creating Dependency Between ...

Global site tag (gtag.js) - Google Analytics