iOS-GCD学习之Group

来源:互联网 发布:网络伤感歌曲打包下载 编辑:程序博客网 时间:2024/04/30 21:19

今天刚好碰到一个这样的需求,开始想用信号量去搞,最后经过同事的指点,才发现group最适合,记录一下~

前面在group子线程去做,最后group汇总起来。

如果想在dispatch_queue中所有的任务执行完成后在做某种操作,在串行队列中,可以把该操作放到最后一个任务执行完成后继续,但是在并行队列中怎么做呢。这就有dispatch_group 成组操作。比如

复制代码
    dispatch_queue_t dispatchQueue = dispatch_queue_create("ted.queue.next", DISPATCH_QUEUE_CONCURRENT);    dispatch_group_t dispatchGroup = dispatch_group_create();    dispatch_group_async(dispatchGroup, dispatchQueue, ^(){        NSLog(@"dispatch-1");    });    dispatch_group_async(dispatchGroup, dispatchQueue, ^(){        NSLog(@"dspatch-2");    });    dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^(){        NSLog(@"end");    });
复制代码

上面的 log1 和log2输出顺序不定,因为是在并行队列上执行,当并行队列全部执行完成后,最后到main队列上执行一个操作,保证“end”是最后输出。 另外,这里也可以不用创建自己的并行队列,用全局的global,那个也是个并行队列. dispatch_get_gloable_queue(0,0);

1 0