dispatch_group_t(分派组)

  最近在复习一些ios开发的基础知识,在多线程这一章的时候,看到了分派组,想起了之前开发过程中遇到的一些坑,故写这篇blog,免得后来之人犯同样的错误。

  这个坑的场景大概是这样的,上传多张图片,图片上传完成之后,更新UI。之前老的方案是一张一张的传,传完一张再检查是否完成,这样的效率非常的低下,当时为了赶时间,也没太在意这件事情。现在想想,最佳方案还是使用dispatch_group_t(分派组)来做。

 下面一段代码,是从别的地方copy来的,用来说明分派组的作用和使用方法。

dispatch_group_async可以实现监听一组任务是否完成,完成后得到通知执行其他的操作。这个方法很有用,比如你执行三个下载任务,当三个任务都下载完成后你才通知界面说完成的了。下面是一段例子代码:

  1. [cpp]
  2. dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
  3. dispatch_group_t group = dispatch_group_create(); 
  4. dispatch_group_async(group, queue, ^{ 
  5. [NSThread sleepForTimeInterval:1]; 
  6. NSLog(@"group1"); 
  7. }); 
  8. dispatch_group_async(group, queue, ^{ 
  9. [NSThread sleepForTimeInterval:2]; 
  10. NSLog(@"group2"); 
  11. }); 
  12. dispatch_group_async(group, queue, ^{ 
  13. [NSThread sleepForTimeInterval:3]; 
  14. NSLog(@"group3"); 
  15. }); 
  16. dispatch_group_notify(group, dispatch_get_main_queue(), ^{ 
  17. NSLog(@"updateUi"); 
  18. }); 
  19. dispatch_release(group);
  20. dispatch_group_async是异步的方法,运行后可以看到打印结果:
  21.  group1
  22. group2
  23. group3
  24. updateUI

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值