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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
iOS并发程序设计中几种方法的特点及使用技巧研究.doc

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

文档评论(0)

guan_son + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档