dispatch_group_t(分派组)
来源:互联网 发布:网络舆论监督具有传统 编辑:程序博客网 时间:2024/05/29 18:48
最近在复习一些ios开发的基础知识,在多线程这一章的时候,看到了分派组,想起了之前开发过程中遇到的一些坑,故写这篇blog,免得后来之人犯同样的错误。
这个坑的场景大概是这样的,上传多张图片,图片上传完成之后,更新UI。之前老的方案是一张一张的传,传完一张再检查是否完成,这样的效率非常的低下,当时为了赶时间,也没太在意这件事情。现在想想,最佳方案还是使用dispatch_group_t(分派组)来做。
下面一段代码,是从别的地方copy来的,用来说明分派组的作用和使用方法。
dispatch_group_async可以实现监听一组任务是否完成,完成后得到通知执行其他的操作。这个方法很有用,比如你执行三个下载任务,当三个任务都下载完成后你才通知界面说完成的了。下面是一段例子代码:
- [cpp]
- 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, ^{
- [NSThread sleepForTimeInterval:1];
- NSLog(@"group1");
- });
- dispatch_group_async(group, queue, ^{
- [NSThread sleepForTimeInterval:2];
- NSLog(@"group2");
- });
- dispatch_group_async(group, queue, ^{
- [NSThread sleepForTimeInterval:3];
- NSLog(@"group3");
- });
- dispatch_group_notify(group, dispatch_get_main_queue(), ^{
- NSLog(@"updateUi");
- });
- dispatch_release(group);
- dispatch_group_async是异步的方法,运行后可以看到打印结果:
- group1
- group2
- group3
- updateUI
0 0
- dispatch_group_t(分派组)
- 调度组dispatch_group_t
- iOS dispatch_group_t
- dispatch_group_t使用
- 分派
- 分派
- dispatch_group_t 等待功能
- iOS CGD dispatch_group_t 等待
- GCD之dispatch_group_t
- dispatch_group_t踩过的坑
- 单分派、多分派
- 单分派、多分派
- 话说分派
- 再论双分派
- Java分派
- 内存分派
- 方法分派
- 分派队列
- Animation动画详解二
- 【浅墨Unity3D Shader编程】之五 圣诞夜篇: Unity中Shader的三种形态对比&混合操作合辑
- ionic中导航栏讲解
- 在windows 7 下安装vs2005.打开vs2005的时候老提示要“运行vs2005sp1 建议使用管理员权限”
- C++中调用C函数库
- dispatch_group_t(分派组)
- mysql中文乱码问题
- 14.使用 CSS 显示 XML
- iOS NSNotificationCenter 通知
- [译] MVP 不是一个产品,而是一个过程
- JAVA IDE环境中一些配置
- CSS新增特性和CSS选择器
- cookie中文乱码解决
- iOS开发之使用XMPPFramework实现即时通信(二)