GCD-dispatch_group
2017-03-21 14:09
232 查看
创建一个任务组,把一组任务提交到一个或多个队列里面。
可以监听这个任务组在某个确定的队列里完成的通知,以执行后续的任务。
若提交到了多个队列里面,某一个队列完成任务的时候,其他队列不一定完成。
队列里的任务根据队列的属性来串行或者并行执行
示例:
输出如下:
@thread:{number = 3, name = (null)}——-0
@thread:{number = 3, name = (null)}——-1
@thread:{number = 3, name = (null)}——-2
@thread:{number = 3, name = (null)}——-3
@thread:{number = 3, name = (null)}——-4
#thread:{number = 3, name = (null)}——-0
#thread:{number = 3, name = (null)}——-1
#thread:{number = 3, name = (null)}——-2
#thread:{number = 3, name = (null)}——-3
#thread:{number = 3, name = (null)}——-4
在 < OS_dispatch_queue: queueIdentifier[0x17016ae00]>队列中的任务组已执行完
可以监听这个任务组在某个确定的队列里完成的通知,以执行后续的任务。
若提交到了多个队列里面,某一个队列完成任务的时候,其他队列不一定完成。
队列里的任务根据队列的属性来串行或者并行执行
示例:
- (IBAction)gcdGroupButtonAction:(UIButton *)sender { //创建一个并行执行队列 dispatch_queue_t queue = dispatch_queue_create("queueIdentifier", DISPATCH_QUEUE_CONCURRENT); dispatch_group_t group = dispatch_group_create(); //以下两个任务执行顺序不定,因为它们是并行任务 dispatch_group_async(group, queue, ^{ for (int i = 0; i<5; i++) { NSLog(@"@thread:%@-------%i",[NSThread currentThread],i); } }); dispatch_group_async(group, queue, ^{ for (int i = 0; i<5; i++) { NSLog(@"#thread:%@-------%i",[NSThread currentThread],i); } }); //当指定任务组的指定队列全部执行完成后执行如下代码 dispatch_group_notify(group, queue, ^{ NSLog(@"在%@队列中的任务组%@已执行完",queue,group); }); }
输出如下:
@thread:{number = 3, name = (null)}——-0
@thread:{number = 3, name = (null)}——-1
@thread:{number = 3, name = (null)}——-2
@thread:{number = 3, name = (null)}——-3
@thread:{number = 3, name = (null)}——-4
#thread:{number = 3, name = (null)}——-0
#thread:{number = 3, name = (null)}——-1
#thread:{number = 3, name = (null)}——-2
#thread:{number = 3, name = (null)}——-3
#thread:{number = 3, name = (null)}——-4
在 < OS_dispatch_queue: queueIdentifier[0x17016ae00]>队列中的任务组已执行完
相关文章推荐
- OS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)
- iOS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)
- iOS GCD, 同步,异步,串行队列,并行队列,dispatch_group
- GCD之dispatch_group_create
- ios 多线程控制线程并发数、GCD之dispatch_group、GCD信号量
- GCD 学习(四) dispatch_group
- GCD 之四:Dispatch Group
- GCD 信号量控制并发(dispatch_semaphore)以及dispatch_group_async
- iOS--GCD(使用dispatch_group来进行线程同步)
- GCD收录3--dispatch_group线程调度组
- 完整详解GCD系列(三)dispatch_group
- iOS系统GCD学习(3):dispatch_group
- iOS GCD中级篇 - dispatch_group的理解及使用
- iOS系统GCD学习(4):dispatch_group2
- GCD高级用法(二) dispatch_group
- iOS系统GCD学习(3):dispatch_group
- GCD 第三篇 dispatch_group
- iOS学习笔记74- 完整详解GCD系列(三)dispatch_group
- 完整详解GCD系列(三)dispatch_group
- iOS GCD之dispatch_group的使用(多个文件并发上传)