iOS并发程序设计中几种方法的特点及使用技巧研究

iOS并发程序设计中几种方法的特点及使用技巧研究李岚摘要:如今移动设备已经进入了多核心CPU时代,并且随着时间的推移,CPU的核心数只会增加不会减少。作为软件开发者需要尽可能地提高应用的并发性,充分利用多核心CPU的性能。iOS是由苹果公司开发的移动操作系统,在iOS开发中,主要通过DispatchQueues、DispatchSources和OperationQueues来提高应用的并发性。该文对针对这三种工具的使用方法及技巧进行了研究,总结出提高多线程编程的效率的方法。关键词:iOS;并发程序;多线程:TP311文献标识码:A:1009-3044(2016)09-0083-02iOS是苹果公司开发的移动操作系统,随着苹果电子产品的风靡世界,iOS版本的不断更新,“果粉”们对新应用的需求量日益增加,越来越多的程序员选择加入到iOS应用开发的行列中。在如今多核心CPU时代,如何提高所开发应用的并发性,充分利用多核心CPU,是软件开发者需要思考的问题。GrandCentralDispatch(共产党)是苹果公司开发的一个多核编程的解决方法。该方法的需要在iOS4.0以上的版本中使用。DispatchQueues、DispatchSource和OperationQueue是iOS中的多线程编程中通常使用的三种方法,开发过程通过使用它们可以提高应用的并发性。因为它们都能“自动地”解决在什么时间、何种系统可用资源条件下建立及维护线程的支持工作。同时,向程序员隐藏了线程这个名称,并以工作队列这样抽象的对象,使得并发程序更加方便实现。其中DispatchQueues和DispatchSource两种方法是基于共产党的。下面依次介绍三种方法的使用特点及技巧。1DispatchQueue的使用DispatchQueue作为对象,接受任务,将任务以先进先出的顺序执行。并且它还有着编程简单、能够提供线程池的管理、节约内存空间的使用、不trap内核、无死锁、在顺序的队列中比直接加锁同步的执行速度快等一系列的优点。DispatchQueue可以并发执行任务,也能够串行执行任务。并发任务只要是在队列中的工作,都会被陆续地扔在各个Thread中去执行,它们之间相互独立,不需要等待其中一个结束了,再由队列扔出一个新的任务到Thread上去执行,而且是同时在各个Thread中各自执行。串行任务则意味着在这个队列中的各种操作,需要“一个一个”地按顺序进行执行,下一个任务需要等待上一个任务执行结束后,才会进入执行。1.1DispatchQueue中队列的三种分类DispatchQueue中队列的队列分为顺序队列、并发队列和Maindispatchqueue三种。所谓顺序队列即是在一个queue中,每次仅1个任务在执行。并发队列即是在一个queue中,每次多于1个任务在执行,而这个多的数量由queue自己决定,它是根据相应的系统资源来决定的,资源多则数量多,资源少则数量少。maindispatchqueue,它是一个顺序的队列,它在mainthread上执行,程序员也可以称mainthread为”程序同步关键点“。1.2某些关键的“优点”1)如果通过线程编程,其中2个线程上的task,都去访问共享资源。通过使用lock来进行线程的同步,额外的会造成相应的内核中断。而相应的,对于DispatchQueue而言,可以使用顺序的queue来进行处理,从而提高效率。2)多个DispatchQueue的之间是并发的执行的,若是顺序的话,单个DispatchQueue之内是顺序的。3)DispatchQueue会根据系统状况来选择createthread的数目,不会无限制扩张。1.3block的问题1)block看上去像函数指针,其实它是一个基本的数据结构对象,由编译器建立和管理。2)block可以访问其父作用域上的变量,如果不加__block,则是把这个变量拷贝到block自身的堆内存空间上。3)block不要去使用父作用域上的指针变量,这些指针指向的对象的生命周期是由caller来决定的。也就是说,block不要引用一个野指针。4)queue会copy一个block到其中,当block执行完毕,它会做release的处理。1.4queue需要release的问题全局的queue,不需要retain和release。自己create的queue,需要release。1.5queue的自身的context的设定每一个queue都可以设定用户自定义的context数据,可以通过调用dispatch_set_context(queue,contextdata)设置context数据,通过dispatch_set_finalizer_f来设定怎样释放其对应queue的contextdata的函数指针。1...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?