iOS开发:深入理解dispatch_group
2017-04-21 09:56
204 查看
转自:http://blog.csdn.net/liuyinghui523/article/details/50618092
Dispatch Group
在追加到Dispatch Queue中的多个任务处理完毕之后想执行结束处理,这种需求会经常出现。如果只是使用一个Serial Dispatch Queue(串行队列)时,只要将想执行的处理全部追加到该串行队列中并在最后追加结束处理即可,但是在使用Concurrent Queue 时,可能会同时使用多个Dispatch
Queue时,源代码就会变得很复杂。
在这种情况下,就可以使用Dispatch Group。
控制台的输出:
因为向Concurrent Dispatch Queue 追加处理,多个线程并行执行,所以追加处理的执行顺序不定。执行顺序会发生变化,但是此执行结果的done一定是最后输出的。
无论向什么样的Dispatch Queue中追加处理,使用Dispatch Group都可以监视这些处理执行的结果。一旦检测到所有处理执行结束,就可以将结束的处理追加到Dispatch Queue中,这就是使用Dispatch Group的原因。
下面试一个使用Dispatch Group异步下载两张图片,然后合并成一张图片的medo(注意,我们总是应该在主线程中更新UI):
Dispatch Group
在追加到Dispatch Queue中的多个任务处理完毕之后想执行结束处理,这种需求会经常出现。如果只是使用一个Serial Dispatch Queue(串行队列)时,只要将想执行的处理全部追加到该串行队列中并在最后追加结束处理即可,但是在使用Concurrent Queue 时,可能会同时使用多个Dispatch
Queue时,源代码就会变得很复杂。
在这种情况下,就可以使用Dispatch Group。
因为向Concurrent Dispatch Queue 追加处理,多个线程并行执行,所以追加处理的执行顺序不定。执行顺序会发生变化,但是此执行结果的done一定是最后输出的。
无论向什么样的Dispatch Queue中追加处理,使用Dispatch Group都可以监视这些处理执行的结果。一旦检测到所有处理执行结束,就可以将结束的处理追加到Dispatch Queue中,这就是使用Dispatch Group的原因。
下面试一个使用Dispatch Group异步下载两张图片,然后合并成一张图片的medo(注意,我们总是应该在主线程中更新UI):
相关文章推荐
- iOS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)
- iOS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)
- iOS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)
- iOS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)
- OS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)
- iOS开发之GCD -- dispatch_group
- iOS:iOS8开发(三)~深入理解autolayout
- IOS深入理解GCD之dispatch_sync
- iOS开发:深入理解GCD 第一篇
- 深入理解iOS开发之RunLoop
- iOS开发:深入理解GCD 第一篇
- 【iOS开发】观察者模式-通知的使用及深入理解
- iOS开发之深入理解GCD
- 深入理解iOS开发中的UIScrollView
- iOS开发——响应链(Responder Chain)的深入理解和代码示例
- iOS开发——响应链(Responder Chain)的深入理解和代码示例(二)
- iOS开发系列--深入理解RunLoop
- IOS开发—深入理解 GCD(一)
- 零基础ios开发(五 深入理解继承—植物大战僵尸 )
- iOS开发~UI布局(三)深入理解autolayout