需求:两个异步任务都完成后, 回到主线程

/**

1.下载图片1和图片2

2.将图片1和图片2合并成一张图片后显示到imageView上

思考:

* 下载图片 : 子线程

* 等2张图片都下载完毕后, 才回到主线程

*/

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

// 创建一个组

dispatch_group_t group = dispatch_group_create();

// 开启一个任务下载图片1

__block UIImage *image1 = nil;

dispatch_group_async(group, global_queue, ^{

image1 = [self imageWithURL:@"http://news.baidu.com/z/resource/r/image/2014-06-22/2a1009253cf9fc7c97893a4f0fe3a7b1.jpg"];

});

// 开启一个任务下载图片2

__block UIImage *image2 = nil;

dispatch_group_async(group, global_queue, ^{

image2 = [self imageWithURL:@"http://news.baidu.com/z/resource/r/image/2014-06-22/b2a9cfc88b7a56cfa59b8d09208fa1fb.jpg"];

});

// 同时执行下载图片1\下载图片2操作

// 等group中的所有任务都执行完毕, 再回到主线程执行其他操作

dispatch_group_notify(group, main_queue, ^{

self.imageView1.image = image1;

self.imageView2.image = image2;

// 合并

UIGraphicsBeginImageContextWithOptions(CGSizeMake(200, 100), NO, 0.0);

[image1 drawInRect:CGRectMake(0, 0, 100, 100)];

[image2 drawInRect:CGRectMake(100, 0, 100, 100)];

self.bigImageView.image = UIGraphicsGetImageFromCurrentImageContext();

// 关闭上下文

UIGraphicsEndImageContext();

});

//    if (self.log == NO) {

//        NSLog(@"-------touchesBegan");

//        self.log = YES;

//    }

//    static dispatch_once_t onceToken;

//    dispatch_once(&onceToken, ^{

//        NSLog(@"-------touchesBegan");

//    });

}

要求两个异步任务都完成后, 才能回到主线程:dispatch_group_t的更多相关文章

  1. C# 多线程join的用法,等待多个子线程结束后再执行主线程

    等待多个子线程结束后再执行主线程 class MultiThread{ #region join test public void MultiThreadTest() { Thread[] ths = ...

  2. Kafka producer异步发送在某些情况会阻塞主线程,使用时候慎重

    最近发现一个Kafka producer异步发送在某些情况会阻塞主线程,后来在排查解决问题过程中发现这可以算是Kafka的一个说明不恰当的地方. 问题说明 在很多场景下我们会使用异步方式来发送Kafk ...

  3. 两个异步处理AsyncTask和Handler的优缺点

    AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操 ...

  4. 以两种异步模型应用案例,深度解析Future接口

    摘要:本文以实际案例的形式分析了两种异步模型,并从源码角度深度解析Future接口和FutureTask类. 本文分享自华为云社区<[精通高并发系列]两种异步模型与深度解析Future接口(一) ...

  5. 【高并发】两种异步模型与深度解析Future接口

    大家好,我是冰河~~ 本文有点长,但是满满的干货,以实际案例的形式分析了两种异步模型,并从源码角度深度解析Future接口和FutureTask类,希望大家踏下心来,打开你的IDE,跟着文章看源码,相 ...

  6. iOS 多个异步网络请求全部返回后再执行具体逻辑的方法

    对于dispatch多个异步操作后的同步方法,以前只看过dispatch_group_async,看看这个方法的说明: * @discussion * Submits a block to a dis ...

  7. AsyncTask和Handler两种异步方式的实现和区别比较

    1  AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以 ...

  8. 关于使用Iscroll.js异步加载数据后不能滑动到最底端的问题解决方案

    关于使用Iscroll.js异步加载数据后不能滑动到最底端,拉到最下边又弹回去的问题困扰了我老半天,相信很多朋友都遇到了.我刚好不小心解决了,和大家分享一下.由于各种忙,下边就直接上代码吧. (前提是 ...

  9. iOS8以后UIAlertView和UIActionSheet两种alert页面都将通过UIAlertController来创建

    1. Important: UIAlertView is deprecated in iOS 8. (Note that UIAlertViewDelegate is also deprecated. ...

随机推荐

  1. WINWORD.EXE-损坏的图像

    问题详情: 系统键  + R键,运行 再输入regedit HKEY_CLASSES_ROOT\.docx HKEY_CLASSES_ROOT\Word.Document.12 HKEY_CURREN ...

  2. C# foreach 循环遍历数组

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  3. 你真得懂Javascript中的==等于运算符吗?

    var i = 2; Number.prototype.valueOf = function() { return i++; }; var a = new Number( 42 ); if (a == ...

  4. nyoj999 师傅又被妖怪抓走了 (预处理+bfs+状态压缩)

    题目999 题目信息 执行结果 本题排行 讨论区 师傅又被妖怪抓走了 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 话说唐僧复得了孙行者,师徒们一心同体,共诣西方.自宝 ...

  5. vue 图片lazyload

    今天看到我一醉哥的一篇朋友圈分享:<不如我们从头来过 | 掘金> 看完之后,百感交集,互联网的浪潮使创业公司如雨后春笋般崛起, 每一个初创公司都会有一群怀着美好愿景的小伙伴, 但是当寒冬来 ...

  6. [Angular] Component architecture and Reactive Forms

    It it recommeded that when deals with form component, we can create a container component to hold st ...

  7. 一起talk C栗子吧(第八回:C语言实例--素数)

    各位看官们,大家好,从今天開始.我们讲大型章回体科技小说 :C栗子,也就是C语言实例. 闲话休提, 言归正转. 让我们一起talk C栗子吧! 看官们.上一回中咱们说的是进制转换的样例,这一回咱们说的 ...

  8. linux进入root模式

    sudo su 然后输入密码 然后就会进入root模式,,,前面的提示符变成#

  9. jQuery----鼠标移动、点击案例

    单击隐藏: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...

  10. 【BZOJ 2754】[SCOI2012]喵星球上的点名

    [链接]h在这里写链接 [题意]     n个人;     由姓和名组成.s1[i]和s2[i];     有m个询问串.     问你第j个询问串,是否为某个人的姓或者名的子串.     如果是的话 ...