您的位置:首页 > 其它

GCD之dispatch_group_t

2016-02-27 10:26 218 查看
不废话,直接上代码,从代码的执行效果看如何使用

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

dispatch_group_t group = dispatch_group_create();

dispatch_group_async(group, queue, ^{

for (NSInteger i = 0; i<100; i++) {

NSLog(@"a=%ld",(long)i);
usleep(100*1000);

}

});

dispatch_group_async(group, queue, ^{

for (NSInteger i = 0; i<100; i++) {

NSLog(@"b=%ld",(long)i);
usleep(100*1000);

}

});

dispatch_group_notify(group, queue, ^{

NSLog(@"上面两个线程结束了");

});

dispatch_group_async(group, queue, ^{

for (NSInteger i = 0; i<200; i++) {

NSLog(@"e=%ld",(long)i);
usleep(100*1000);

}

});


可实现多任务并行执行,任务结束后再做其他处理

如果在dispatch_group_notify后面再加一个线程会发现dispatch_group_notify也会等待后面的线程全部执行后执行,其实就是要等待组内的线程全部执行结束,可与dispatch_barrier 的效果对比学习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: