iOS开发培训之操作队列与分发队列的对比

2016-01-15 13:08:36 436浏览

        为了减轻开发者的工作负担,苹果公司打造了两种关键的并发技术,直接植入了iOS和Mac OS X之中,这就是操作(operation)队列和分发(dispatch)队列。

iOS开发培训之操作队列与分发队列""

        浅谈iOS开发培训之操作队列与分发队列的对比:

        操作队列是一种面向对象的运作方式,使用Objective—C的封装方式。简要来说,就是有一个队列对象(NSOperationQueue),其中容纳了多个操作对象(NSOperation、NSBlockOperation、NSInvoeationOperation),这些操作会根据队列的配置来执行。对于自己所容纳的操作,操作队列对象会自动管理和控制其执行。

        分发队列实际上是一种基于C语言的解决方案,使用了一种新型的中央服务,名为GCD(Grand Central Dispatch,大型中央分发器)。GCD就像一个集线器或者分发站,将多项操作分布到多个处理器上,它是构建于核心服务层之上的。当GCD分发一个新线程时,它会根据当前可用资源进行判断,在这一时刻哪个处理器最适合做该项工作,就会为线程选择该处理器。使用GCD,可以建立3种不同类型的队列。

        1、串行队列:任务会按照添加的顺序,一个接一个地依次执行。在队列中的前一个任务执行完毕之前,下一个任务不会启动。这种队列非常适用于执行类似从互联网上下载文件这样的操作,然后在下载完毕之后再将其写入或者读到内存中。比如说,你不会希望在文件下载完毕之前就写入该文件。

        2、并发队列:任务会按照添加的顺序执行,但根据当时可用的资源情况,可以在前面的任务结束之前就启动下一个任务。这在执行一系列独立操作时很有用处,如对多个图像实施滤镜操作。要对下一个图像进行操作,并不需要等到当前图像处理完毕之后。如果GCD认为有足够的资源来启动第二个任务,它就会自动执行这个操作。

        3、主分发队列:这个队列与应用程序的主循环是等同的。要记住,当你执行多线程操作时,用户界面只能在应用程序的主线程中进行修改。这样可以保证用户的输入不会被某个后台线程所忽略。因此,如果你正在某个辅助队列中执行代码,而又需要在主线程中执行一个动作,就可以在主分发队列中添加一个任务,该任务会在应用程序的主运行循环中执行。

        与分发队列类似,基于0bjective.C的操作队列也有各种不同的模式。操作队列执行操作时,可以采取并发模式或者非并发模式,非并发队列的运作方式非常类似于GCD的主分发队列。虽然操作队列没有像分发队列那样的串行模式,但可以定义操作的最大并发数目。如果希望得到与串行分发队列同样的效果。只要把最大并发数设为1就可以了。

        如果想更多地了解操作队列和分发队列,我强烈推荐你学习扣丁学堂iOS开发教程视频,里面包括了iOS开发具体操作同时还含有C语言课程和C++语言课程讲解。完全适合零基础入门iOS开发技术领域。

查看更多关于“coding资讯”的相关文章>>

标签:

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号